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.