Respostas:
Como diz skaffman, use a opção --where :
mysqldump --opt --where="1 limit 1000000" database
Claro, isso daria o primeiro milhão de linhas de todas as tabelas.
SELECT * from table WHERE
, portanto, neste caso, você recebe SELECT * from table WHERE 1 limit 1000000
. Sem o 1, você teria uma consulta inválida. Especificar 1 para uma cláusula where (como 1 é sempre verdadeiro) simplesmente seleciona todos os registros.
mysqldump --opt --where="1 limit 1000000 offset 1000000" --no-create-info database
para obter a segunda página de 1 milhão de registros. Certifique-se de usar o sinalizador --no-create-info em páginas diferentes da primeira para despejar apenas os dados e deixar de fora as coisas da tabela de criação .
Se você deseja obter n
registros de uma tabela específica, pode fazer algo assim:
mysqldump --opt --where="1 limit 1000000" database table > dump.sql
Isso irá despejar as primeiras 1000000
linhas da tabela nomeada table
no arquivo dump.sql
.
Como o pedido padrão é ASC, o que raramente é o que você deseja nessa situação, é necessário ter um design de banco de dados adequado para fazer com que o DESC funcione imediatamente. Se todas as suas tabelas tiverem UMA coluna de chave primária com o mesmo nome (natural ou substituto), você poderá despejar facilmente os n registros mais recentes usando:
mysqldump --opt --where="1 ORDER BY id DESC limit 1000000" --all-databases > dump.sql
Esse é um motivo perfeito para você sempre nomear o ID de sua PK e evitar PKs compostas, mesmo em tabelas de associação (use chaves substitutas).