Estoy tratando de cargar una pequeña muestra de registros de una base de datos grande en una base de datos de prueba.
¿Cómo le dice a mysqldump que solo le dé n registros de 8 millones?
Gracias
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 obtieneSELECT * 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:Esto volcará las primeras
1000000
filas de la tabla nombradatable
en el archivodump.sql
.fuente
mysqldump puede recibir una consulta SQL para ejecutar, de la cual tomará los datos para el volcado. Luego puede usar la cláusula "límite X" en su consulta para restringir el número de filas.
fuente
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:
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).
fuente