mysqldump dos últimos 1000 registros

11

como tirar o mysqldump dos últimos 1000 registros de um banco de dados

bvishal4u
fonte

Respostas:

18

mysqldumptem uma --whereopção Supondo que você tenha algum tipo de detalhamento para descobrir quais são os últimos 1000 registros inseridos (por exemplo, um campo de incremento automático chamado id), você poderá anexar isso ao mysqldumpcomando, da seguinte maneira:

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

O 1=1é necessário porque a palavra-chave "onde" é inserido na consulta automaticamente, assim você tem que dar-lhe algum SQL para avaliar.

EDIT: Houve uma edição anônima nesta resposta removendo o espaço entre --where e "1 = 1, dizendo que o comando falhou sem espaço. Acabei de testar e ele trabalha com espaço e erros sem espaço, sem saber o que o editor estava vendo.

O erro ao deixar o espaço de fora:

mysqldump: unknown variable 'where1=1 ORDER BY UserID DESC LIMIT 1000'
jj33
fonte
Fiz o que você sugeriu e votei na sua resposta, mas e a violação de restrição de integridade?
licorna 21/09/11
Esse é outro problema. Minha solução é um hack na melhor das hipóteses. Se você quiser integridade para colocar as linhas de volta em algum outro lugar, isso vai ser um problema mais difícil e muito dependente de seu projeto
jj33
Isso provavelmente mudou desde que a resposta foi originalmente publicado, mas os docs mysqldump agora dizer que a opção deve ser especificados como --where="..."ou -w "..."Veja dev.mysql.com/doc/refman/5.6/en/...
Matt Passell
1
como obter um mysqldump das últimas 100 linhas para cada tabela em um banco de dados inteiro?
Rakib 17/11/2015