CSV zu SQL INSERT
Dieser Konverter liest RFC 4180 CSV in Ihrem Browser und schreibt SQL INSERT-Anweisungen. Jede Zelle wird durch Inspektion typisiert – nicht in Anführungszeichen gesetzte Zahlen bleiben Zahlen, true und false werden zu TRUE und FALSE, alles andere ist ein in Anführungszeichen gesetzter, mit einfachen Anführungszeichen escapter String. Header-Namen werden zu doppelten Anführungszeichen gesetzten Spaltenbezeichnern; nichts wird hochgeladen.
CSV zu SQL INSERT erklärt
CSV hat keine Typen. Alles in einem Spreadsheet-Export ist Text, und die Datenbank ist der Ort, der entscheidet, was ein Wert bedeutet – was CSV-zu-SQL zur Konversion macht, bei der die Typisierung für Sie erfolgt, ob Sie darüber nachgedacht haben oder nicht. Dieser Konverter macht es pro Zelle und gibt seine Regeln klar an: eine Zelle, die sich wie eine Zahl liest, wird zu einer Zahl, true oder false wird zu TRUE oder FALSE, eine leere Zelle wird zu NULL, und alles andere ist ein String.
Die SQL-Seite verwendet die Standardabwehr und nichts Exotisches: Header-Namen werden zu doppelten Anführungszeichen gesetzten Spaltenbezeichnern, String-Werte sind in einfache Anführungszeichen eingeschlossen mit eingebetteten, verdoppelten Anführungszeichen – die O''Brien-Form, die jeder SQL-Dialekt korrekt liest – und Zeilen werden als eine mehrzeilige INSERT-Anweisung ausgegeben. Das Parsen erfolgt strikt nach RFC 4180, sodass eingebettete Kommas oder Zeilenumbrüche in quoted fields intakt bleiben, was genau der Punkt ist, an dem schnelle Komma-getrennte Konverter Ihre Daten beschädigen.
Die Konversion läuft vollständig in diesem Browser-Tab. Das CSV wird durch im-Code-Seite-Code geparst, das SQL wird im Speicher zusammengesetzt, und keine Anfrage verlässt die Seite – das Network-Panel in DevTools bleibt leer, während Sie arbeiten, und die Content-Security-Policy der Seite verbietet ausgehende Verbindungen.
Wenn Ihre Datensätze bereits Typen tragen – von einer API oder einem Export, der sie beibehalten hat —, der JSON zu SQL Konverter nimmt sie als gegeben an, anstatt sie zu inferieren, mit den gleichen Quoting- und NULL-Regeln.
Möchten Sie die Daten als JSON anstelle von SQL? Der CSV zu JSON Konverter verwendet den gleichen RFC 4180-Parser und gibt Ihnen typisierte Datensätze anstelle von Anweisungen aus.
Wie die Konversion tatsächlich funktioniert
Die Engine parst Ihr CSV nach den tatsächlichen Regeln von RFC 4180 – Datensätze, Felder, verdoppelte Anführungszeichen in quoted fields, CRLF- oder LF-Zeilenumbrüche —, behandelt dann den ersten Datensatz als Header und jeden folgenden Datensatz als eine Zeile der INSERT. Die Typisierung wird pro Zelle angewendet, unmittelbar vor der Ausgabe:
Zwei Details aus echten Spreadsheet-Exports werden verarbeitet, anstatt sie zu ignorieren: eine UTF-8 Byte Order Mark am Anfang der Datei, die Excel standardmäßig hinzufügt, wird vor dem Parsen entfernt, und der Tabellenname, den Sie in das Tabellenfeld des Tools eingeben, wird zur quoted identifier in der INSERT – das Beispiel unten verwendet products.
- Zahlen: eine Zelle, die einem Integer- oder Dezimalmuster entspricht, wird unmaskiert ausgegeben – 42 und 24.99 werden zu Zahlen. Eine führende Null disqualifiziert sie, also bleibt 02134 ein String und Ihre Postleitzahlen erhalten.
- Booleans: true oder false, in beliebiger Groß-/Kleinschreibung, werden zu TRUE oder FALSE.
- Leere Zellen: ein leeres Feld wird zu NULL. Ein Feld, das vorhanden ist, aber quoted-empty ("") ist, bleibt ein leerer String, weil RFC 4180 die beiden unterscheidet und auch SQL das tut.
- Strings: alles andere wird in einfache Anführungszeichen gesetzt mit eingebetteten, verdoppelten Anführungszeichen – O'Brien wird zu 'O''Brien'.
- Bezeichner: Header-Namen werden als doppelte Anführungszeichen gesetzte Spaltennamen, in Header-Reihenfolge, ausgegeben.
Die Zelle-zu-Literal-Zuordnung
Eine Zeile pro Regel, damit Sie die Ausgabe vorhersehen können, bevor Sie sie ausführen. Beachten Sie, dass die leere Zelle und die quoted-empty-Zelle absichtlich verschiedene Zeilen dieser Tabelle sind, weil es das Paar ist, über das die Leute am häufigsten fragen:
| CSV-Zelle | SQL-Literal | Warum |
|---|---|---|
| 42 | 42 | Integer-Muster |
| 24.99 | 24.99 | Dezimalmuster |
| true | TRUE | Boolean-Wort, beliebige Groß-/Kleinschreibung |
| (leer) | NULL | Abwesender Wert |
| 02134 | '02134' | Führende Null erhalten – Postleitzahl |
| O'Brien | 'O''Brien' | Anführungszeichen verdoppelt nach Standard |
Wie die Ausgabe aussieht
Das Arbeitsbeispiel unten ist das exakte Paar, das der Button „Beispiel laden“ des Konverters für eine Tabelle namens products erzeugt. Drei Zeilen, jede eine Regel: der Preis des Schreibtischlamp ist ein unmaskiertes Dezimal und sein Lagerflag ein unmaskiertes TRUE; die Zeile für das Zelt benötigte RFC 4180-Quoting im CSV, weil der Produktname ein Komma enthält, und das ausgegebene SQL verdoppelt den Apostroph; die Zeile für die Laterne lässt zwei Zellen leer und beide landen als NULL, nicht als leere Strings. Speichern Sie die Ausgabe als .sql-Datei und sie läuft so wie sie ist in psql, sqlite3 oder jedem Migration-Runner – die Anweisung ist vollständig und mit Semikolon abgeschlossen.
Ungleiche Zeilen und andere ehrliche Ablehnungen
RFC 4180 erlaubt technisch Datensätze mit weniger oder mehr Feldern als der Header, aber SQL erlaubt das nicht – ein INSERT-Tupel muss genau die Spalten füllen, die seine Anweisung deklariert. Also werden zwei Eingaben mit einer Meldung, die die Zeile nennt, abgelehnt, anstatt mit NULL aufgefüllt oder gekürzt zu werden:
- Ein Datensatz, dessen Feldanzahl sich vom Header unterscheidet – das Auffüllen mit NULLs würde Werte erfinden, die Sie nie gemessen haben, und das Weglassen zusätzlicher Felder würde Daten verwerfen, die Sie tatsächlich bereitgestellt haben.
- Doppelte Header-Namen – zwei Spalten mit demselben Namen können nicht beide quoted identifiers in einer INSERT sein, also meldet der Konverter die Spalte anstatt sie stillschweigend umzubenennen.
Häufig gestellte Fragen
Wird mein CSV hochgeladen, wenn ich es in SQL umwandle?
Nein. Der Parser und der SQL-Writer laufen beide in diesem Browser-Tab, in JavaScript, das beim Öffnen der Seite geladen wurde. Es gibt keinen Upload-Endpunkt, und die Content-Security-Policy verhindert, dass die Seite nach außen verbindet. Überzeugen Sie sich selbst in DevTools: das Network-Panel zeigt während der Konversion keinen Verkehr, selbst bei großen Dateien.
Welchen CSV-Dialekt akzeptiert der Parser?
RFC 4180, der Standard: kommagetrennte Felder, doppelte Anführungszeichen zum Escapen, verdoppelte Anführungszeichen in quoted fields und eingebettete Kommas oder Zeilenumbrüche in quoted fields werden alle korrekt geparst. Sowohl CRLF als auch reine LF-Zeilenumbrüche werden akzeptiert. Was er nicht tut, ist raten – semikolon- oder tab-getrennte Dateien werden mit einer Meldung abgelehnt, weil ein Konverter, der stillschweigend Trennzeichen austauscht, die Spalten beschädigt, die er nicht sehen kann.
Wie entscheidet die Typerkennung zwischen Zahl, Boolean und String?
Pro Zelle, gegen strikte Muster: ein Feld ist nur dann eine Zahl, wenn es exakt einem Integer- oder Dezimal-Literal entspricht, nur dann ein Boolean, wenn es true oder false in beliebiger Groß-/Kleinschreibung liest, und nur dann NULL, wenn das Feld leer ist. Alles andere wird als quoted String ausgegeben. Die Strenge ist der Punkt – ein Konverter, der Werte wie 007 aggressiv typisiert, wird Ihrer Datenbank Überraschungen liefern.
Warum blieb meine Postleitzahl oder Produktnummer ein String?
Weil sie es sollte. Eine Nummer wie 02134 oder 007 trägt Informationen in ihren führenden Nullen, und eine Zahl hat nirgends, um sie zu speichern. Das Inferenzmuster lehnt führende Nullen absichtlich ab, also werden solche Zellen als quoted Strings ausgegeben und die Bedeutung der Spalte überlebt den Trip in die Datenbank intakt.
Was passiert mit Daten im CSV?
Sie erreichen die Datenbank als quoted Strings, absichtlich. SQL-Dateiliterale unterscheiden sich zwischen Dialekten, und ein Konverter, der 2024-01-05 in dialekt-spezifische Form umwandelt, bearbeitet Ihre Daten. Der String erreicht die Datenbank intakt; eine DATE-Spalte oder die eigene Cast-Fähigkeit der Datenbank wendet den Typ beim Insert an – was der einzige Ort ist, an dem diese Entscheidung gehört.
Kann ich stattdessen eine INSERT-Anweisung pro Zeile erhalten?
Die Ausgabe ist eine einzige mehrzeilige INSERT – ein Parse, eine transaktionsfreundliche Anweisung, und die Form, die Bulk-Loading-Leitlinien empfehlen. Die VALUES-Tupel sitzen eine pro Zeile unter der Spaltenliste, also wenn Ihr Werkzeug einzelzeilige Anweisungen erfordert, ist das Teilen ein mechanischer Edit: kopieren Sie die Spaltenliste und beenden Sie jedes Tupel mit einem Semikolon.
Welche verwandten Tools sollten Sie als Nächstes nutzen?
- JSON zu SQL INSERTKonverter – läuft in Ihrem BrowserÖffnen
- CSV in JSON umwandelnTabellen-Export in Datensätze umwandeln, Anführungszeichen inklusiveÖffnen
- JSON in CSV umwandelnDatensätze in eine Tabelle umwandeln, Verschachtelung inklusiveÖffnen
- JSON formatierenEinrückung und Sortierung einstellen, Kommentare entfernenÖffnen
- JSON validierenSyntax prüfen mit exakter Zeile und Spalte, per Klick reparierenÖffnen
- JSON zu Markdown-TabelleKonverter – läuft in Ihrem BrowserÖffnen