CodeKitHub
JSON-Tools

CSV-zu-SQL-Konverter

Zuletzt aktualisiert:

Um eine CSV-Zeile in SQL umzuwandeln, wird jede Spalte zu einem Wert in einer INSERT-INTO-Anweisung – Zahlen bleiben ohne Anführungszeichen, Text wird in einfache Anführungszeichen gesetzt, wobei interne Anführungszeichen verdoppelt werden (aus O'Brien wird O''Brien), und leere Zellen werden zu NULL. Dieses Tool wendet diese Umwandlung auf Ihre gesamte CSV-Datei an, vollständig in Ihrem Browser – mit Ihrem eigenen Tabellennamen und korrektem String-Escaping, sodass exportierte Tabellenkalkulationen oder Datenbank-Dumps Ihr Gerät nie verlassen.

Was ist dieses Tool?

Das Befüllen einer Testdatenbank, das Laden eines Tabellenkalkulations-Exports in eine Tabelle oder die Migration eines kleinen Datensatzes beginnt oft gleich: Sie haben eine CSV-Datei und brauchen SQL. Dieses Tool analysiert Ihre CSV-Datei (wobei die Kopfzeile als Spaltennamen dient) und erstellt eine einzige INSERT-INTO-Anweisung für alle Datenzeilen, bereit zum Einfügen in einen Datenbank-Client.

Textwerte werden in einfache Anführungszeichen gesetzt, wobei interne Anführungszeichen durch Verdopplung maskiert werden (aus O'Brien wird also O''Brien) – die Standard-Escape-Regel, die MySQL, PostgreSQL und SQLite gemeinsam verwenden. Eine leere CSV-Zelle wird als SQL-Schlüsselwort NULL geschrieben, nicht als leere Zeichenkette – das ist eine bewusste Entscheidung, denn eine leere Zelle in einer Tabellenkalkulation bedeutet meist „kein Wert“ und nicht „ein leerer Text“, und genau das erwarten die meisten Datenbankschemata mit NULL.

Ob ein Wert in Anführungszeichen gesetzt wird oder nicht, entscheidet eine einfache Heuristik, keine echte Typinferenz: Sieht die getrimmte Zelle wie eine reine Ganz- oder Dezimalzahl aus (optional mit führendem Minuszeichen), wird sie ohne Anführungszeichen geschrieben; alles andere – auch Werte, die nur wie Zahlen aussehen, aber zusätzliche Zeichen enthalten, etwa Postleitzahlen mit führenden Nullen oder Telefonnummern – wird als Text in Anführungszeichen gesetzt. Das hält die Ausgabe ehrlich: Sie ist ein guter Ausgangspunkt für einen kleinen Import, aber kein Ersatz dafür, Ihre Daten vor der Ausführung gegen das tatsächliche Tabellenschema zu prüfen.

Quelle: Das CSV-Parsing folgt RFC 4180, dem, was einem formalen CSV-Standard am nächsten kommt; die Verdopplung einfacher Anführungszeichen zum Escapen von Strings ist die gemeinsame Konvention, die von MySQL, PostgreSQL und SQLite dokumentiert wird.

Warum sollte man es nutzen?

  • Anpassbarer Tabellenname – einmal festlegen, und jede Zeile zielt auf diese Tabelle.
  • Korrektes String-Escaping – einfache Anführungszeichen innerhalb von Werten werden verdoppelt, damit das SQL nicht bricht oder abgeschnitten wird.
  • Vorhersehbare NULL-Behandlung – leere Zellen werden zu NULL statt zu einer leeren Zeichenkette, passend dazu, wie die meisten Datenbanken fehlende Daten unterscheiden.
  • Gängige SQL-Syntax – das hier erzeugte INSERT INTO ... VALUES ... funktioniert unverändert in MySQL, PostgreSQL und SQLite.
  • 100 % clientseitig – Ihre CSV-Daten (die Kunden- oder Geschäftsdaten enthalten können) werden in Ihrem Browser analysiert und konvertiert und niemals irgendwohin hochgeladen.

Anleitung

  1. Fügen Sie CSV-Daten mit einer Kopfzeile ein, z. B. name,age\nAlice,30\nBob,25.
  2. Geben Sie den Namen der Zieltabelle ein (Standard: my_table).
  3. Klicken Sie auf „SQL generieren“.
  4. Kopieren Sie die INSERT-INTO-Anweisung oder laden Sie sie als .sql-Datei herunter und führen Sie sie gegen Ihre Datenbank aus.

Beispiel

Eingabe

name,age,city
Alice,30,
Bob,,NYC

Ausgabe

INSERT INTO `my_table` (`name`, `age`, `city`)
VALUES
  ('Alice', 30, NULL),
  ('Bob', NULL, 'NYC');

Beachten Sie, dass die leeren Zellen zu NULL wurden (nicht zu leeren Zeichenketten) und der zahlenartige age-Wert 30 unquotiert blieb, während jeder Textwert in Anführungszeichen gesetzt wurde.

Praktische Tipps

  • Eine lokale Testdatenbank befüllen: Exportieren Sie eine kleine Stichprobe als CSV aus einer Tabellenkalkulation, konvertieren Sie sie hier, und führen Sie die INSERT-Anweisung gegen Ihre Entwicklungsdatenbank aus.
  • Prüfen Sie immer die Spaltentypen, bevor Sie das generierte SQL gegen eine echte Tabelle ausführen – dieses Tool erkennt numerisch vs. Text mit einer einfachen Heuristik, nicht anhand Ihres tatsächlichen Schemas, sodass eine Ganzzahl-Spalte mit einem bestimmten erwarteten Format möglicherweise manuell angepasst werden muss.
  • Bei Tausenden von Zeilen ist die einzelne, mehrzeilige INSERT-Anweisung, die dieses Tool erzeugt, weiterhin gültiges SQL, aber sehr große Anweisungen können die maximale Paketgröße einer Datenbank überschreiten – teilen Sie die CSV-Datei zunächst in kleinere Chargen auf, falls Sie an diese Grenze stoßen.

Warum NULL und keine leere Zeichenkette

Ein häufiger Fehler beim händischen Schreiben von CSV-zu-SQL-Skripten besteht darin, jede fehlende Zelle als leere Zeichenkette '' zu behandeln. Das ist technisch gültiges SQL, bedeutet aber meist nicht das, was Sie wollen: Eine als Ganzzahl definierte Spalte lehnt '' rundweg ab, und selbst in einer Textspalte bedeutet '' in den meisten Schemadesigns und Reporting-Abfragen stillschweigend etwas anderes als „wir kennen diesen Wert nicht“ (eine WHERE-Spalte-IS-NULL-Prüfung passt nicht auf leere Zeichenketten, und umgekehrt). NULL für leere Zellen zu verwenden entspricht der Semantik, die die meisten Datenbanken und ORMs erwarten, und vermeidet Typfehler, wenn eine numerische Spalte in manchen Zeilen fehlende Werte aufweist.

Häufig gestellte Fragen

Funktioniert das mit jeder SQL-Datenbank?

Die erzeugte Syntax – Bezeichner in Backticks, Textwerte in einfachen Anführungszeichen, standardmäßiges INSERT INTO ... VALUES ... – ist bei MySQL, PostgreSQL und SQLite üblich. PostgreSQL verlangt keine Backticks um Bezeichner (es verwendet bei Bedarf doppelte Anführungszeichen), aber Backtick-Namen richten dort auch keinen Schaden an, solange Ihre Spaltennamen nicht ungewöhnlich sind und mit reservierten Wörtern kollidieren. Es wird kein einzelner offizieller SQL-Standard befolgt – nur die Syntax, die auf den gängigsten Datenbanken unverändert funktioniert.

Warum wird eine leere Zelle zu NULL statt zu einer leeren Zeichenkette ''?

Das ist eine bewusste Design-Entscheidung: In den meisten realen CSV-Exports bedeutet eine leere Zelle, dass der Wert unbekannt oder nicht zutreffend ist, nicht wörtlich ein leerer Text. NULL ist das, was die meisten Datenbankschemata dafür erwarten. Falls Ihr Anwendungsfall tatsächlich leere Zeichenketten benötigt, müssen Sie das generierte SQL für diese Fälle von Hand anpassen.

Wie entscheidet das Tool, ob ein Wert Anführungszeichen benötigt?

Das ist eine einfache Heuristik, keine echte Typinferenz: Besteht eine getrimmte Zelle nur aus Ziffern (mit optionalem führendem Minuszeichen und höchstens einem Dezimalpunkt), wird sie als Zahl ohne Anführungszeichen geschrieben. Alles andere wird als Text in Anführungszeichen gesetzt. Das bedeutet, dass eine Postleitzahl wie 00501 oder eine Telefonnummer nur dann als Text behandelt wird, wenn zusätzliche Zeichen vorhanden sind – eine führende Null allein wird hier immer noch als numerisch erkannt, prüfen Sie also Kennungen wie Postleitzahlen und IDs, bevor Sie das SQL ausführen.

Werden meine Daten irgendwohin hochgeladen?

Nein. Sowohl das Parsen als auch die SQL-Generierung erfolgen als JavaScript in Ihrem Browser – es wird nichts an einen Server gesendet, was die Nutzung mit exportierten Kunden- oder Geschäftsdaten sicher macht.

Kann es CSV-Werte mit Kommas oder Anführungszeichen verarbeiten?

Ja. Die CSV wird mit einem geeigneten Parser für zitierte Felder analysiert, der Kommas, Zeilenumbrüche und verdoppelte Anführungszeichen innerhalb zitierter Felder versteht – keine simple Trennung an Kommas – sodass ein Feld wie „Smith, John“ als ein einzelner Wert gelesen wird, nicht in zwei Spalten aufgeteilt.

Verwandte Tools