Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Tabellen in mysqldump basierend auf einem Muster überspringen

Leider mysqldump erfordert, dass Tabellennamen vollständig qualifiziert sind, sodass Sie einen Parameter nicht als Regex-Muster angeben können.

Sie könnten jedoch ein Skript verwenden, um Ihren mysqldump zu generieren, indem Sie es mit dem information_schema verbinden und alle Tabellen mit etwas wie:

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

Und dann generiert es --ignore-table Parameter für alle Tabellennamen, die mit dem Regex von ^test übereinstimmen .

Um nur das Schema und keine Daten auszugeben, können Sie verwenden --no-data=true als Parameter.

Wenn Sie alles für alle Nicht-Testtabellen erhalten möchten, aber nur das Schema für eine andere Tabelle, müssen Sie zwei separate mysqldump-Befehle verwenden (einen für die Ignorieren-Tabelle für alle Testtabellen plus das Schema nur für eine und einen anderen für nur das Schema der Nur-Schema-Tabelle), wobei die zweite mithilfe von >> an die Ausgabedatei angehängt wird anhängen Operator .

Ihr resultierendes Skript könnte also Folgendes generieren:

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