Mysql
 sql >> Database >  >> RDS >> Mysql

Salta le tabelle in mysqldump in base a uno schema

Sfortunatamente mysqldump richiede che i nomi delle tabelle siano completamente qualificati, quindi non puoi specificare un parametro come modello regex.

Potresti, tuttavia, utilizzare uno script per generare il tuo mysqldump collegandolo a information_schema ed elencare tutte le tabelle usando qualcosa come:

SELECT TABLE_NAME, TABLE_SCHEMA
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA NOT IN ('INFORMATION_SCHEMA', 'mysql', 'PERFORMANCE_SCHEMA');

E poi generando --ignore-table parametri per tutti i nomi di tabella che corrispondono all'espressione regolare di ^test .

Per scaricare solo lo schema e nessun dato puoi usare --no-data=true come parametro.

Se vuoi ottenere tutto per tutte le tabelle non di test ma solo lo schema per un'altra tabella, allora dovresti usare due comandi mysqldump separati (uno per la tabella ignore per tutte le tabelle di test più lo schema solo uno e un altro solo per lo schema della tabella solo schema) con la seconda aggiunta al file di output utilizzando il >> append operatore .

Quindi lo script risultante potrebbe generare qualcosa del tipo:

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