Ich muss einen Speicherauszug einer Datenbank erstellen, die 50 ungerade Tabellen enthält, von denen ich etwa 15 ungerade Tabellen mit Präfix ausschließen möchte exam_
Ich habe es versucht mysqldump --ignore-table=dbname.exam_*
und sogar versucht. --ignore-table=dbname.exam_%
Es hat nicht wie erwartet funktioniert. Ich musste --ignore-table
mehrmals verwenden.
Bearbeiten: Ich habe einige Shell-Skripte gesehen, die diese auflisten tables not like tablename_%
und an sie weitergeben mysqldump
.
Ich würde jedoch gerne wissen, ob es in mysqldump oder mysql eine Option gibt, um dasselbe zu tun, ohne es skripten zu müssen.
Bearbeiten-Hinzufügen: Verwendete schließlich ein Skript, um die Datenbank ohne Tabellen ignore-table=
mehrmals zu sichern .
TABLES=`mysql --skip-column-names [DB-NAME] -e 'show tables' | grep -v 'exam_'`
mysqldump [DB-NAME] $TABLES > mysqldump.sql
Antworten:
Nein, es gibt keine solche Option im
mysqldump
Befehl, wie in den Dokumenten angegeben :quelle
mysqldump --all-databases
nur zu sehen, ob ein Fehler vorliegt, oder einfach zur nächsten dDB zu springen.Sie können die gewünschten Tabellennamen von MySQL abrufen und sie dann zum Erstellen Ihrer MySQL-Dump-Parameter verwenden.
Ersetzen Sie im folgenden Beispiel einfach "someprefix" durch Ihr Präfix (z. B. "exam_").
Die
SHOW TABLES
Abfrage kann geändert werden, um andere Tabellensätze zu finden. Oder Sie können eine Abfrage für dieINFORMATION_SCHEMA
Tabelle verwenden, um noch mehr Kriterien zu verwenden.Dies wurde mit Hilfe dieser Antwort zum Abrufen "aller Tabellen mit Ausschluss in Bash" erstellt: https://stackoverflow.com/a/9232076/631764
und diese Antwort zum Überspringen von Tabellen mit einigen verwendeten Bashs: https://stackoverflow.com/a/425172/631764
quelle
Ich denke, die Verwendung von
information_schema
ist ein guter Weg, um dies zu tun.quelle