Helaas mysqldump vereist dat tabelnamen volledig gekwalificeerd zijn, zodat u een parameter niet als een regex-patroon kunt specificeren.
Je zou echter een script kunnen gebruiken om je mysqldump te genereren door het te laten verbinden met het information_schema en alle tabellen op te sommen met zoiets als:
SELECT TABLE_NAME, TABLE_SCHEMA
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA NOT IN ('INFORMATION_SCHEMA', 'mysql', 'PERFORMANCE_SCHEMA');
En dan het genereren van --ignore-table
parameters voor alle tabelnamen die overeenkomen met de regex van ^test
.
Om alleen het schema en geen gegevens te dumpen, kunt u gebruiken --no-data=true
als een parameter.
Als je alles wilt krijgen voor alle niet-testtabellen, maar alleen het schema voor een andere tabel, dan moet je twee afzonderlijke mysqldump-opdrachten gebruiken (een voor de negeer-tabel voor alle testtabellen plus het schema alleen en een voor alleen het schema van de tabel met alleen schema) waarbij de tweede wordt toegevoegd aan het uitvoerbestand met behulp van de >>
toevoegen
operator .
Uw resulterende script kan dus iets genereren als:
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