Nur die Struktur (Schema) aus einem SQL-Dump exportieren

Du hast einen vollständigen Dump auf der Platte, willst aber nur die Struktur — CREATE TABLE, Indizes, Foreign Keys — ohne die Log-Tabellen mit 89 Millionen Zeilen. Oder umgekehrt: nur die Daten, ohne CREATE-Statements. Hier steht, warum die üblichen Dump-Flags bei einer fertigen Datei nicht helfen und wie du Struktur und Daten mit einem Klick trennst.

Drei Situationen kommen immer wieder vor:

Warum mysqldump --no-data nicht ausreicht

Der klassische Rat lautet mysqldump --no-data (nur Struktur) oder mysqldump --no-create-info (nur Daten). Beides sind Export-Flags: Sie ändern, was ein frischer Dump aus einer laufenden Datenbank enthält. Für einen Dump, der bereits als .sql-Datei auf der Platte liegt, tun sie gar nichts.

In der Praxis kommt die Datei oft von jemand anderem, aus einem Backup-Job oder von einem Server, auf den du keinen Live-Zugriff mehr hast. Du kannst mysqldump nicht erneut gegen eine Datenbank laufen lassen, die nicht erreichbar ist — die Zugangsdaten sind weg, der Server ist abgeschaltet, oder die Datei ist schlicht alles, was du bekommen hast. Ab da nützen die Flags nichts, und du bearbeitest die Datei selbst.

Der manuelle Weg

Der naheliegende Schritt ist, Zeilen mit grep oder sed zu entfernen. Um die Struktur zu behalten und die Daten wegzuwerfen:

# alles außer INSERT-Zeilen behalten
grep -v '^INSERT INTO' dump.sql > schema.sql

# oder nur die INSERT-Zeilen für einen reinen Daten-Dump
grep '^INSERT INTO' dump.sql > data.sql

Bei einem kleinen, ordentlichen Dump sieht das gut aus — und bricht dann bei einem echten:

Am Ende debuggst du deinen eigenen Filter, statt dein Schema zu bekommen.

Nur Struktur oder nur Daten mit DumpCleaner

DumpCleaner versteht SQL-Statements, statt Zeilen zu matchen, und trennt Struktur von Daten zuverlässig — bei Dateien jeder Größe:

  1. Zieh deinen .sql-Dump in DumpCleaner (MySQL, MariaDB oder PostgreSQL). Die Datei wird streamend geparst, sodass auch ein mehrere Gigabyte großer Dump mit konstantem Speicher lädt.
  2. Schalte die Statement-Typen um, die du willst: CREATE TABLE, CREATE INDEX, INSERT INTO, ALTER, DROP, LOCK, SET. Wähle INSERT INTO ab, und du erhältst nur Struktur; wähle CREATE TABLE / CREATE INDEX ab, und du erhältst nur Daten.
  3. Oder nutze ein Preset — Nur Struktur oder Nur Daten — um alle Schalter in einem Schritt zu setzen, und verfeinere danach bei Bedarf pro Tabelle.
  4. Exportieren. Du erhältst eine schlanke Schema-Datei für Staging oder CI oder einen sauberen Daten-Dump zum Befüllen.

Weil der Filter statement-aware ist, wird ein mehrzeiliges Extended-INSERT als Ganzes behalten oder verworfen — nie mittendrin zerschnitten.

Die eigentliche Stärke: Das Filtern funktioniert pro Statement-Typ und pro Tabelle, und beides lässt sich kombinieren. Du kannst die Struktur jeder Tabelle behalten, aber INSERT-Daten nur für die drei Tabellen übernehmen, die du wirklich brauchst — und die logs-Tabelle mit 89 Millionen Zeilen als leere Hülle stehen lassen. Das kann kein --no-data-Flag ausdrücken.

Struktur und Daten in Sekunden trennen

DumpCleaner filtert einen vorhandenen Dump nach Statement-Typ und nach Tabelle — nur Struktur, nur Daten oder beliebig gemischt — streamend und mit konstantem Speicher. Native macOS- & iPadOS-App, Einmalkauf.

Im App Store laden

Häufige Fragen

Kann ich die Daten ohne das Schema exportieren?

Ja. Deaktiviere CREATE TABLE und CREATE INDEX (oder wähle das Preset „Nur Daten“) und behalte INSERT INTO. DumpCleaner exportiert nur die Zeilen, bereit zum Laden in ein bereits vorhandenes Schema.

Behält ein Struktur-Export Indizes und Foreign Keys?

Ja. „Nur Struktur“ behält CREATE TABLE, CREATE INDEX, ALTER TABLE und die Foreign-Key-Definitionen — alles, was die Datenbank definiert. Nur die INSERT-Datenzeilen werden entfernt.

Kann ich mischen — Struktur für alle Tabellen, Daten nur für einige?

Ja. Das Filtern läuft pro Statement-Typ und pro Tabelle, und beides kombiniert sich. Behalte die Struktur jeder Tabelle, aber übernimm INSERT-Daten nur für die wenigen Tabellen, die du wirklich brauchst.

Funktioniert das mit PostgreSQL?

Ja. DumpCleaner liest MySQL-, MariaDB- und PostgreSQL-Dumps und erkennt das Format automatisch, sodass Struktur- und Daten-Exporte bei pg_dump-Dateien genauso funktionieren.

Schema ohne Daten — oder Daten ohne Schema

Ziehen, Statement-Typen umschalten, exportieren. DumpCleaner teilt jeden Dump in genau den Teil, den du brauchst.

Im App Store laden