Nicht jede Aufgabe braucht die komplette Datenbank. Wenn du lokal an einem Feature arbeitest, willst du selten einen vollständigen Produktions-Dump, der deine Platte füllt und eine Stunde zum Importieren braucht. Du willst die paar Tabellen, die das Feature tatsächlich anfasst.
Dasselbe gilt beim Debuggen einer einzelnen Tabelle — ein Datenproblem in orders nachzustellen erfordert nicht die anderen 126 Tabellen — oder bei einer Teil-Migration, bei der nur einige Tabellen in einen neuen Dienst umziehen. In all diesen Fällen lautet die Frage gleich: Wie hole ich genau diese Tabellen sauber und schnell aus einem riesigen Dump heraus?
Der sed/grep-Ansatz und warum er zerbricht
Die klassische Antwort: die Datei mit sed zwischen den Abschnitts-Kommentaren zerschneiden, die mysqldump pro Tabelle schreibt:
# die users-Tabelle aus einem mysqldump herauslösen
sed -n '/-- Table structure for table `users`/,/-- Table structure for table/p' dump.sql > users.sql
Sieht clever aus und funktioniert bei einem kleinen, aufgeräumten Dump vielleicht sogar einmal. Bei einer echten 7-GB-Datei geht das auf viele subtile Arten schief:
- Mehrzeilige INSERTs. Ein einzelnes
INSERT INTO ... VALUESkann tausende Zeilen umfassen. Zeilenbasierte Werkzeuge wiesedundgrepschneiden solche Zeilen mittendrin ab und erzeugen eine Datei, die nicht mehr parst. - Backticks und Sonderzeichen. Spaltenwerte enthalten
--, Semikola, Backticks, Anführungszeichen und Zeilenumbrüche innerhalb von Strings. Dein Muster trifft Text innerhalb der Daten, der nie als Trenner gemeint war. - Tabellennamen als Teilstrings. Wer
userextrahiert, erwischt auchuser_roles,user_sessionsundpassword_user, weil der Name als Teilstring anderer Namen vorkommt. - Kommentare und Header verschieben sich. Der exakte Kommentartext unterscheidet sich zwischen MySQL-, MariaDB- und PostgreSQL-Versionen, und
pg_dumpnutzt diese Header gar nicht — derselbe Befehl liefert dann stillschweigend nichts. - Keine Foreign-Key-Auflösung. Selbst wenn du
ordersperfekt herausschneidest, verweisen dessen Zeilen aufusers.sedahnt davon nichts, und der Extrakt scheitert beim Import mit einem Foreign-Key-Fehler.
Am Ende stapelst du awk auf grep auf sed, testest an Teilmengen und traust dem Ergebnis trotzdem nicht. Es geht einfacher.
Tabellen mit DumpCleaner extrahieren
DumpCleaner parst den Dump richtig — es versteht Statement-Grenzen, mehrzeilige INSERTs, Backticks und Kommentare — und schneidet deshalb immer an den richtigen Stellen. Die gewünschten Tabellen zu extrahieren dauert vier Schritte:
- Zieh deinen
.sql-Dump hinein. DumpCleaner liest die Datei streamend, sodass ein 7-GB-Dump mit konstantem Speicher öffnet, statt alles auf einmal zu laden. - Lies die automatisch erkannte Tabellenliste. Jede Tabelle wird herausgeparst und mit Zeilenzahl und Größe aufgelistet — kein Scrollen durch Millionen Zeilen, um zu sehen, was drin ist.
- Wähle die gewünschten Tabellen. Hake
users,ordersundproductsan oder tippe ein Regex- bzw. Exclude-Muster wie*_logs, um ganze Gruppen auf einmal zu entfernen. - Elterntabellen mitnehmen und exportieren. Optional referenzierte Elterntabellen automatisch einschließen und dann eine saubere, importierbare Datei exportieren.
Ein paar Dinge machen das deutlich weniger fummelig als Shell-Werkzeuge:
- Exclude-Muster wie
*_logsoder*_sessionsentfernen Audit- und Session-Rauschen, ohne dass du Dutzende Tabellen von Hand abwählst. - Regex-Filter matchen nach Präfix, Suffix oder beliebigem Muster — behalte etwa alles, was auf
shop_*passt. - Eine Live-Vorschau zeigt dir, welche Tabellen im Ergebnis landen, während du die Auswahl änderst.
- Eine geschätzte Ausgabegröße verrät dir schon vor dem Export, wie groß der Extrakt wird, damit er lokal auch passt.
- Foreign-Key-Abhängigkeiten lassen sich automatisch einschließen, sodass die Auswahl von
ordersstillschweigendusersmitbringt und der Extrakt ohne Constraint-Fehler importiert.
Genau die Tabellen, die du brauchst — sonst nichts
DumpCleaner extrahiert bestimmte Tabellen aus Dumps jeder Größe — streamend, mit konstantem Speicher und mit für dich aufgelösten Foreign Keys. Native macOS- & iPadOS-App, Einmalkauf.
Im App Store ladenHäufige Fragen
Kann ich mehrere Tabellen auf einmal extrahieren?
Ja. Hake so viele Tabellen an, wie du möchtest — users, orders und products zusammen — und DumpCleaner schreibt sie alle in einem Durchgang in eine einzige Datei.
Bleiben die Foreign-Key-Abhängigkeiten erhalten?
Optional ja. Aktiviere Foreign-Key-Abhängigkeiten einschließen, und jede von deiner Auswahl referenzierte Elterntabelle wird automatisch mitgenommen, sodass der Extrakt ohne Constraint-Fehler importiert.
Kann ich Tabellen per Muster ausschließen?
Ja. Nutze Exclude-Muster wie *_logs oder *_sessions oder einen regulären Ausdruck, um ganze Tabellengruppen zu entfernen, statt sie einzeln abzuwählen.
Funktioniert das auch mit PostgreSQL?
Ja. DumpCleaner liest MySQL-, MariaDB- und PostgreSQL-Dumps (pg_dump) und behandelt schema-qualifizierte Namen wie public.users beim Extrahieren von Tabellen.
Schluss mit sed und grep
Ziehen, Tabellen wählen, exportieren. DumpCleaner holt genau die Tabellen, die du brauchst — samt Foreign Keys — aus jedem Dump.
Im App Store laden