Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Banco de dados de importação MySQL, mas ignora tabela específica


A resposta aceita pela RandomSeed pode levar muito tempo! Importar a tabela (só para descartá-la mais tarde) pode ser um grande desperdício dependendo do tamanho.

Para um arquivo criado usando
mysqldump -u user -ppasswd --opt --routines DBname > DBdump.sql

Atualmente, recebo um arquivo de cerca de 7 GB, dos quais 6 GB são dados para uma tabela de log que não 'preciso' estar lá; recarregar este arquivo leva algumas horas. Se eu precisar recarregar (para fins de desenvolvimento, ou se for necessário para uma recuperação ao vivo), eu desmarco o arquivo assim:
sed '/INSERT INTO `TABLE_TO_SKIP`/d' DBdump.sql > reduced.sql

E recarregue com:
mysql -u user -ppasswd DBname < reduced.sql

Isso me dá um banco de dados completo, com a tabela "indesejada" criada, mas vazia. Se você realmente não quiser as tabelas, simplesmente descarte as tabelas vazias após o término do carregamento.

Para várias tabelas, você pode fazer algo assim:
sed '/INSERT INTO `TABLE1_TO_SKIP`/d' DBdump.sql | \
sed '/INSERT INTO `TABLE2_TO_SKIP`/d' | \
sed '/INSERT INTO `TABLE3_TO_SKIP`/d' > reduced.sql

Existe uma 'pegadinha' - cuidado com os procedimentos em seu dump que podem conter "INSERT INTO TABLE_TO_SKIP".