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

Ignorar tabelas no mysqldump com base em um padrão


Infelizmente mysqldump requer que os nomes das tabelas sejam totalmente qualificados para que você não possa especificar um parâmetro como um padrão regex.

Você pode, no entanto, usar um script para gerar seu mysqldump fazendo com que ele se conecte ao information_schema e liste todas as tabelas usando algo como:
SELECT TABLE_NAME, TABLE_SCHEMA
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA NOT IN ('INFORMATION_SCHEMA', 'mysql', 'PERFORMANCE_SCHEMA');

E, em seguida, gerar --ignore-table parâmetros para todos os nomes de tabela que correspondem ao regex de ^test .

Para despejar apenas o esquema e nenhum dado, você pode usar --no-data=true como parâmetro.

Se você quiser obter tudo para todas as tabelas que não são de teste, mas apenas o esquema para outra tabela, você precisará usar dois comandos mysqldump separados (um para a tabela de ignorar para todas as tabelas de teste mais o esquema apenas um e outro para apenas o esquema da tabela somente de esquema) com o segundo anexando ao arquivo de saída usando o >> anexar operador .

Portanto, seu script resultante pode gerar algo como:
mysqldump -u root -ptoor databaseName --ignore-table=testTable1 --ignore-table=testTable2 --ignore-table=testTable3  --ignore-table=schemaOnlyTable > mysqldump.sql

mysqldump -u root -ptoor databaseName schemaOnlyTable --no-data=true >> mysqldump.sql