Datenbank aus Shellscript-Sicherung wiederherstellen: Fehler gefunden?
bearbeitet von Raketenwilli> 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.