Como remover algumas tabelas de um arquivo SQL grande?

0

Eu tenho um arquivo SQL com tamanho em torno de 3 GB. Isso leva muito tempo para ser restaurado toda vez que eu tirei o despejo recente da produção.

Nesta tabela, o próprio 'access_log' recebeu 2.2 GB, que é apenas um log. Para fins de teste, é OK ter essa tabela vazia. Existe alguma maneira de evitar essa tabela ao restaurar o banco de dados.

Meu comando para restauração parece

mysqldump -u uname -p pwd --no-data site_name_com | awk '/DROP TABLE/ { print }' | mysql -u uname -p pwd site_name_com && mysql -u uname -p pwd site_name_com < /..file_path../..file_name.sql

Como posso fazer um despejo de banco de dados que exclua uma tabela específica?

    
por Pasu 06.08.2014 / 09:36

1 resposta

1

O formato de saída mysqldump é simplesmente uma longa lista de comandos SQL, que devem ser retornados ao programa mysql .

Você pode usar mysqldump --ignore-table=<database>.<table> para criar um dump que não inclua a tabela access_log .

Em seguida, você pode usar mysqldump --no-data=true para despejar apenas a estrutura da tabela access_log .

Se você concatenar os dois, você terá um script de despejo completo que exclui os dados da tabela access_log .

Contanto que você só precise fazer isso para uma ou algumas tabelas, e controlar a chamada original do mysqldump, essa deve ser uma solução prática.

Pesquisou na tabela de exclusão do mysqldump , que trouxe à tona a minha principal fonte de inspiração, as Ignorar certas tabelas com mysqldump Stack Overflow, e sua resposta aceita .

    
por 06.08.2014 / 09:50