Wenn ich also nun einen mit der Option -B erzeugten Dump mit mienem Importcode einlesen möchte, kann ich diese Anweisung USE myDB; aus dem Dump löschen, die Datei danach nochmal durch gzip laufen lassen und sie dann importieren.
Frage: Gibts auch eine einfachere Möglichkeit?
grep
kann sowas:
$> gunzip -c backup.sql.gz | grep -vP "^USE myDB;$" | mysql …
Das filtert besagte Zeilen vor der Weiterverarbeitung aus, ändert aber die Datei mit dem wertvollen Backup aber gerade nicht. Das musst Du aber anpassen und testen:
$> gunzip -c backup.sql.gz | head -n 30 | grep -P "^USE myDB;$" | less
Packt aus, bricht nach 30 Zeilen ab, sucht, zeigt in less
sodann die Zeilen an, die GENAU eine Zeile USE myDB;
enthalten.
Wird nichts ausgegeben, erhöhe die Zeilenzahl oder sehe nach was grep filtern soll (regex hinter '-P'). Wenn die Zeilenzahl erhöht werden muss, dann mach das auch im „Gegentest“:
$> gunzip -c backup.sql.gz | head -n 30 | grep -vP "^USE myDB;$" | less
Packt aus, bricht nach 30 Zeilen ab, sucht, zeigt in less
sodann jene Zeilen an, welche die GENAUE Zeile USE myDB;
NICHT enthalten.
Wenn die Ergebnisse passen, dann passe den Befehl (oben, unter „grep
kann sowas:“) an.