Estou tentando carregar uma pequena amostra de registros de um banco de dados grande em um banco de dados de teste.
Como você diz ao mysqldump para fornecer apenas n registros de 8 milhões?
obrigado
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ê recebeSELECT * 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:Isso irá despejar as primeiras
1000000
linhas da tabela nomeadatable
no arquivodump.sql
.fonte
O mysqldump pode receber uma consulta SQL para executar, a partir da qual os dados serão retirados. Você pode usar a cláusula "limit X" na sua consulta para restringir o número de linhas.
fonte
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:
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).
fonte