SQL-zu-CSV-Konverter

Manchmal ist die einzige Kopie der benötigten Daten eine .sql-Datei aus einem Backup, ein Dump von INSERT INTO users (id, email, created_at) VALUES (...)-Anweisungen. Sie nur zum erneuten Export in eine Datenbank zu laden, ist langsam. Dieser Konverter liest die Spaltenliste und jedes VALUES-Tupel direkt aus der INSERT-Syntax und gibt eine CSV aus, die Sie in Excel, Google Sheets, Numbers oder pandas öffnen können, ohne das Schema wiederherzustellen.

So konvertieren Sie SQL-INSERTs in CSV

  1. 1

    SQL einfügen

    Fügen Sie eine oder mehrere INSERT-Anweisungen ein. Sowohl einzeilige als auch mehrzeilige VALUES (...)-Blöcke werden unterstützt.

  2. 2

    Spalten automatisch erkannt

    Der Parser liest die Liste `(col1, col2, ...)` direkt vor VALUES und behandelt sie als CSV-Kopfzeile.

  3. 3

    Zeilen extrahiert

    Jedes Tupel `(val1, val2, ...)` wird zu einer CSV-Zeile. Einfach in Anführungszeichen gesetzte Zeichenketten werden entklammert; Zahlen und NULLs gehen als Text durch.

  4. 4

    CSV kopieren

    Nehmen Sie die CSV-Ausgabe und fügen Sie sie in eine Tabelle ein oder speichern Sie sie mit der Endung `.csv`.

Was der Parser akzeptiert

INSERT INTO users (id, email, created_at) VALUES
  (1, 'alice@example.com', '2024-01-12 09:00:00'),
  (2, 'bob@example.com',   '2024-01-13 10:30:00'),
  (3, 'carol@example.com', '2024-01-13 11:15:00');

Wird zu:

id,email,created_at
1,alice@example.com,2024-01-12 09:00:00
2,bob@example.com,2024-01-13 10:30:00
3,carol@example.com,2024-01-13 11:15:00

Angewendete CSV-Escaping-Regeln

  • Das Trennzeichen ist immer ein Komma; es gibt keine Trennzeichen-Option.
  • Felder mit Kommas, doppelten Anführungszeichen oder Zeilenumbrüchen werden in doppelte Anführungszeichen gesetzt.
  • Interne doppelte Anführungszeichen werden verdoppelt (" wird zu ""), gemäß RFC 4180.
  • Führende und abschließende einfache Anführungszeichen aus SQL-Zeichenketten-Literalen werden entfernt.
  • SQL NULL geht als der wörtliche Text NULL durch; ersetzen Sie es nachgelagert, wenn Ihr Werkzeug leere Zellen erwartet.

Zu beachtende Einschränkungen

  • Spaltenliste erforderlich. Der Parser liest die Kopfzeile aus der Liste (col1, col2, ...) vor VALUES. Ein bloßes INSERT INTO t VALUES (...) ohne Spaltenliste erzeugt CSV-Zeilen ohne Kopfzeile.
  • Eine Tabelle auf einmal. Mischt Ihr Dump INSERTs für verschiedene Tabellen, trennen Sie sie zuerst. Zeilen unterschiedlicher Breite erzeugen eine unregelmäßige CSV.
  • Kein CREATE-TABLE-Parsing. Spaltentypen werden nicht verwendet. Daten, JSON und binäre Blobs kommen als Rohtext durch.
  • Jede Klammergruppe wird zu einer Zeile. Der Parser wandelt jede Gruppe (...) in eine Zeile um, daher fügen abschließende Klauseln mit Klammern (ON DUPLICATE KEY UPDATE, RETURNING), Funktionsaufrufe wie NOW() oder verschachtelte Arrays wie (1,2,3) innerhalb eines Werts überzählige Zeilen hinzu. Beschränken Sie die Eingabe auf einfache INSERT ... VALUES-Tupel und ersetzen Sie solche Ausdrücke vor dem Einfügen durch Literale.

Häufig gestellte Fragen

Ja, solange das INSERT der Standardform INSERT INTO table (cols) VALUES (...) folgt, die diese Datenbanken teilen. Das Tool führt keinen vollständigen SQL-Parser aus: Es extrahiert die Spaltenliste und die in Klammern gesetzten Werttupel, halten Sie jede Anweisung also bei einfacher INSERT-Syntax.

Kommas innerhalb einfach in Anführungszeichen gesetzter SQL-Zeichenketten bleiben erhalten. In der Ausgabe wird jedes Feld mit Komma, Anführungszeichen oder Zeilenumbruch in doppelte Anführungszeichen gesetzt und interne Anführungszeichen werden verdoppelt, gemäß RFC 4180. Werte, die selbst Klammern enthalten, werden möglicherweise nicht sauber getrennt.

Nein. Ihr SQL wird an unseren Server gesendet, in einem Durchgang geparst und zurückgegeben, halten Sie die Eingabe also bei einigen Megabyte pro Durchlauf. Teilen Sie sehr große Dumps in Blöcke (ein INSERT-Block pro Block) und konvertieren Sie sie stückweise.

Nein, die Ausgabe ist eine flache CSV. Spaltentypen, Indizes und Einschränkungen leben in CREATE TABLE und liegen außerhalb des Umfangs dieses Konverters.

Ihr SQL wird nur zur Erzeugung der CSV an unseren Server gesendet und nicht gespeichert; wir behalten eine anonyme Zählung, wie viele Zeilen konvertiert wurden, niemals den SQL-Text selbst.

Verwandte Tools

Tool in anderen Sprachen verfügbar