SQL Dump in Datenbanken und Tabellen zerlegen

Als Admin kommt es immer wieder vor das man einen Datenbank Dump hat (z.B. als Backup) und man aus diesem aber nur bestimmte Datenbanken oder Tabellen braucht. Mit drei sed wird das ganze einfach machbar.

Datenbank extrahieren:

sed -n '/^-- Current Database: `Datenbank zum Auspacken`/,/^-- Current Database: `/p' euer_dump.sql > wo_soll_hin.sql

Hier wird mit einem sed von „Current Database“ bis zum nächsten „Current Database“ gesucht. Dabei müssen wir noch den Datenbanknamen angeben. Und schon landet die gewünschte Datenbank in einem File auf der Platte.

Tabelle extrahieren:

Mit Drops im Dump

sed -n -e '/DROP TABLE.*meine_tabelle/,/UNLOCK TABLES/p' wo_solls_hin.sql > nur_eine_tabelle.sql

Auch hier wieder die Magie des sed. Hier wird vom „DROP TABLE“ bis „UNLOCK TABLE“ gesucht. Dazu muss man natürlich die Drops mit im Dump haben, was aber durchaus üblich ist.

Sollte man keine Drops im Dump haben nimmt man den nächsten sed.

Ohne Drops im Dump

sed -n -e '/CREATE TABLE.*meine_tabelle/,/CREATE TABLE/p' wo_solls_hin.sql > nur_eine_tabelle.sql

Nun hat man nur noch die Tabelle die man haben möchte. So kann man auch aus Multi-User Datenbank Dumps gezielt nur bestimmte Tabellen rausholen.

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

This site uses Akismet to reduce spam. Learn how your comment data is processed.