Respuestas:
Como dice skaffman, use la opción --where :
mysqldump --opt --where="1 limit 1000000" database
Por supuesto, eso le daría el primer millón de filas de cada tabla.
SELECT * from table WHERE
, por lo que en este caso se obtiene SELECT * from table WHERE 1 limit 1000000
. Sin el 1, tendría una consulta no válida. Especificar 1 para una cláusula where (dado que 1 siempre es verdadero) simplemente selecciona todos los registros.
mysqldump --opt --where="1 limit 1000000 offset 1000000" --no-create-info database
para obtener la segunda página de 1 millón de registros. Asegúrese de usar el indicador --no-create-info en páginas que no sean las primeras para volcar solo los datos y dejar de lado las cosas de la tabla de creación .
Si desea obtener n
registros de una tabla específica, puede hacer algo como esto:
mysqldump --opt --where="1 limit 1000000" database table > dump.sql
Esto volcará las primeras 1000000
filas de la tabla nombrada table
en el archivo dump.sql
.
Como el orden predeterminado es ASC, que rara vez es lo que desea en esta situación, debe tener un diseño de base de datos adecuado para que DESC funcione de inmediato. Si todas sus tablas tienen UNA columna de clave principal con el mismo nombre (natural o sustituto), puede volcar fácilmente los n últimos registros utilizando:
mysqldump --opt --where="1 ORDER BY id DESC limit 1000000" --all-databases > dump.sql
Esta es una razón perfecta por la cual siempre debe nombrar su ID de PK y evitar los PK compuestos, incluso en las tablas de asociación (en su lugar, use claves sustitutas).