mysqldump de los últimos 1000 registros

11

cómo tomar mysqldump de los últimos 1000 registros de una base de datos

bvishal4u
fuente

Respuestas:

18

mysqldumpTiene una --whereopción. Suponiendo que tiene algún tipo de punto de apoyo para averiguar cuáles son los últimos 1000 registros insertados (por ejemplo, un campo de incremento automático llamado id), debería poder agregarlo al mysqldumpcomando, así:

mysqldump --where "1=1 ORDER BY id DESC LIMIT 1000" DB_NAME TBL_NAME

Esto 1=1es necesario porque la palabra clave "WHERE" se inserta en la consulta automáticamente, por lo que debe darle un poco de SQL para evaluar.

EDITAR: Se realizó una edición anónima de esta respuesta eliminando el espacio entre --where y "1 = 1, diciendo que el comando erró sin espacio. Simplemente probé y funciona con el espacio y los errores sin el espacio, sin saber qué El editor estaba viendo.

El error al dejar el espacio fuera:

mysqldump: unknown variable 'where1=1 ORDER BY UserID DESC LIMIT 1000'
jj33
fuente
Hice lo que sugieres y voté tu respuesta, pero, ¿qué pasa con la violación de la restricción de integridad?
licorna
Ese es otro problema. Mi solución es un hack en el mejor de los casos. Si quieres integridad para poner las filas de nuevo en algún otro lugar, que va a ser un problema más difícil y muy dependiente de su diseño
jj33
Esto probablemente ha cambiado desde que la respuesta se publicó originalmente, pero los documentos de mysqldump ahora dicen que la opción debe especificarse como --where="..."o -w "..."Ver dev.mysql.com/doc/refman/5.6/en/…
Matt Passell
1
¿Cómo obtener un mysqldump de las últimas 100 filas para CADA TABLA en una base de datos completa?
Rakib