JSON zu SQL INSERT
Dieser Konverter erzeugt SQL INSERT-Anweisungen aus einem JSON-Array von Datensätzen in Ihrem Browser. Spaltennamen werden in doppelten Anführungszeichen gesetzt, Strings werden durch Verdopplung von einfachen Anführungszeichen escaped, null wird zu NULL und booleans zu TRUE oder FALSE. Die Datensätze müssen einen gemeinsamen Schlüsselsatz haben; nichts verlässt den Tab.
JSON zu SQL INSERT erklärt
Seed-Daten existieren in JSON – API-Fixtures, exportierte Berichte, Testdatensätze – aber die Datenbank erwartet INSERT-Anweisungen. Der Übergang ist mechanisch und sollte präzise erfolgen: jeder Datensatz wird zu einer Zeile, jeder Schlüssel wird zu einer Spalte und jeder Wert muss als korrekt typisierter SQL-Literal ankommen. Beim Escaping einen Fehler machen und die Anweisung scheitert sofort; einen subtilen Fehler machen und sie scheitert drei Wochen später, beim ersten Namen mit einem Apostroph darin.
Dieser Konverter erzeugt mehrzeilige INSERT-Anweisungen: eine doppelte Anführungszeichen umschlossene Spaltenliste, dann ein VALUES-Tupel pro Datensatz. Doppelte Anführungszeichen sind der SQL-Standard für Bezeichner und einfache Anführungszeichen in Strings haben eingebettete Anführungszeichen verdoppelt – die O''Brien-Form, die jeder konforme Parser als ein einziges Anführungszeichen liest. Zahlen bleiben unverändert, true und false werden zu TRUE und FALSE, und JSON null wird zum unzitierten Schlüsselwort NULL. Sie geben den Zieltabellenamen im Tabellenfeld des Tools an; das Beispiel unten verwendet people.
All das passiert in diesem Browser-Tab. Ihre Datensätze werden mit dem JSON.parse des Browsers selbst geparst, der SQL-Text wird im Speicher zusammengesetzt, und keine Anfrage verlässt die Seite – DevTools' Network-Panel zeigt während einer Konversion nichts, und die Content-Security-Policy der Seite verbietet ohnehin ausgehende Verbindungen.
Falls Ihre Zeilen in einem Spreadsheet-Export und nicht in JSON vorliegen, der CSV zu SQL-Konverter wendet die gleichen Anführungszeichen-Regeln auf einen RFC 4180-Parser mit pro-Zelle-Typinferenz an.
Der Konverter akzeptiert nur ein strenges JSON-Array, also wenn die Daten aus einem Skript oder einer Log-Datei stammen, prüfen Sie sie zuerst mit dem JSON-Validator; der Fehler, den Sie dort sehen, ist der Fehler, den dieses Tool auslösen würde.
Wie die Konversion tatsächlich funktioniert
Die Engine parst Ihr JSON mit JSON.parse – dem RFC 8259-Parser des Browsers selbst – und führt dann drei Prüfungen durch, bevor sie etwas ausgibt, weil jeder Fehlermodus entweder ungültiges oder still falsches SQL erzeugt:
- Form: Die oberste Ebene muss ein Array sein, dessen jedes Element ein Objekt ist; ein einzelnes Objekt oder ein verschachteltes Array wird mit einer Fehlermeldung abgewiesen, die den problematischen Index benennt.
- Konsistente Schlüssel: Jeder Datensatz muss den gleichen Schlüsselsatz haben. Eine INSERT-Anweisung deklariert einmal eine Spaltenliste, also hat ein Datensatz, der einen Schlüssel enthält, den die anderen nicht haben, keinen zugewiesenen Platz – der Konverter meldet den Schlüssel und die Zeile, anstatt NULLs zu erzeugen, die Sie nicht angefordert haben.
- Flache Werte: Objekte und Arrays, die in einem Datensatz verschachtelt sind, haben kein einfaches SQL-Literal-Äquivalent, daher werden sie mit dem benannten Pfad abgewiesen, anstatt hinter Ihrem Rücken zu stringifiziert zu werden.
Die Literal-Zuordnung
Jeder Wert wird nach seinem JSON-Typ gerendert, unter Verwendung nur standardmäßiger SQL-Formen:
- Eine Anmerkung zur Typisierung verdient eine eigene Zeile: TRUE und FALSE sind standardmäßige SQL-Boolean-Literals, die von PostgreSQL und SQLite nativ gelesen und von MySQL als 1 und 0 gelesen werden. Engines ohne Boolean-Literals – wie SQL Servers BIT-Spalten – erwarten 1 und 0 in der Anweisung, also für diese Ziele die Schlüsselwörter ersetzen; die Anführungszeichen- und NULL-Regeln bleiben genau gleich.
| JSON-Wert | SQL-Literal |
|---|---|
| "Ada Lovelace" | 'Ada Lovelace' |
| "O'Brien" | 'O''Brien' – das Anführungszeichen ist verdoppelt |
| null | NULL, unzitiert |
| true / false | TRUE / FALSE |
| 9.5 | 9.5, eine unzitierte Zahl |
| [1, 2] | Abgewiesen, mit dem benannten Pfad |
Wie das Ergebnis aussieht
Das Arbeitsbeispiel unten ist das exakte Paar, das die Schaltfläche „Beispiel laden“ des Konverters für eine Tabelle namens people erzeugt: zwei Datensätze, vier konsistente Schlüssel und jeweils ein interessantes Literal. Der Name des zweiten Datensatzes enthält einen Apostroph, und das Ergebnis zeigt die Standardverteidigung – das Anführungszeichen ist verdoppelt, das jede SQL-Dialekt als ein einziges Anführungszeichen liest, anstatt das String-Ende zu markieren. Seine Punktzahl ist null und wird zum Schlüsselwort NULL, nicht zu einer leeren Zeichenkette – der Unterschied zwischen einer fehlenden Messung und einer der Länge null. Kopieren Sie den Block wie er ist oder laden Sie ihn als .sql-Datei herunter; auf jeden Fall ist es ein vollständiges, terminiertes Skript.
Die Anweisungen in Ihre Datenbank bekommen
Das Ergebnis ist ein vollständiges, terminiertes Skript: fügen Sie es in eine SQL-Konsole ein oder speichern Sie es als .sql-Datei für einen Migration-Runner. Für eine saubere Ausführung umschließen Sie es mit einer Transaktion – BEGIN; davor, COMMIT; danach – sodass ein Fehler mittend im Skript den gesamten Seed zurückrollt, anstatt eine halbe Tabelle zurückzulassen. Da die Anweisungen nur standardmäßige SQL-Formen verwenden, läuft dieselbe Datei unverändert auf PostgreSQL, SQLite und MySQL mit aktiviertem ANSI_QUOTES; nur die obige Anmerkung zu Booleans muss für einen bestimmten Motor angepasst werden.
- psql: Einfügen in die interaktive Shell oder Ausführen von \i seed.sql aus der Eingabeaufforderung.
- sqlite3: Ausführen von .read seed.sql oder Einleiten der Datei aus der Shell per Pipe.
- GUI-Tools: Die meisten Abfragefenster akzeptieren das gesamte Skript als einen Batch und melden die Zeilenanzahl.
Häufig gestellte Fragen
Lädt der JSON zu SQL-Konverter meine Daten hoch?
Nein. Parsing und SQL-Generierung laufen in diesem Browser-Tab mit JavaScript, das einmal beim Öffnen der Seite geladen wird. Die Seite hat keinen Endpunkt, an den Daten gesendet werden könnten, und ihre Content-Security-Policy blockiert ausgehende Anfragen. Die Behauptung ist verifizierbar: Öffnen Sie DevTools, wechseln Sie zum Network-Panel, konvertieren Sie eine große Datei und beobachten, dass keine Anfrage erscheint.
Warum werden Spaltennamen in doppelten Anführungszeichen gesetzt?
In doppelten Anführungszeichen gesetzte Bezeichner sind der SQL-Standard, und sie schützen Spaltennamen, die mit Schlüsselwörtern kollidieren oder gemischte Groß-/Kleinschreibung verwenden – eine Spalte namens order oder UserName benötigt Anführungszeichen, um überleben zu können. PostgreSQL, SQLite und SQL Server akzeptieren sie direkt; MySQL tut es ebenfalls, wenn der ANSI_QUOTES-Modus aktiv ist, andernfalls verwenden Sie sein Backtick-Äquivalent.
Wie werden einfache Anführungszeichen in Strings escaped?
Durch Verdopplung, was der Standard ist: der Name O'Brien wird als 'O''Brien' ausgegeben, und jeder konforme Parser liest das Paar als ein einziges Anführungszeichen. Backslash-Escaping – wie in O\'Brien – ist eine MySQL-Erweiterung und erzeugt ansonsten einen Syntaxfehler oder einen umherirrenden Backslash, weshalb dieser Konverter ihn nicht ausgibt.
Wird JSON null in der SQL-Datenbank zu?
Zum unzitierten Schlüsselwort NULL – SQLs eigene Markierung für einen fehlenden Wert, unterscheidbar von der leeren Zeichenkette ''. Eine null-Punktzahl bedeutet, dass keine Messung durchgeführt wurde; eine leere Zeichenkette bedeutet eine Messung der Länge null. Der Konverter erhält diese Unterscheidung, weil das Zusammenfassen der beiden einer der schwerer rückgängig zu machenden Fehler in einer befüllten Tabelle ist.
Warum müssen alle Datensätze die gleichen Schlüssel haben?
Weil eine INSERT-Anweisung ihre Spaltenliste einmal deklariert und jedes VALUES-Tupel genau diese Spalten füllen muss. Ein Datensatz, der einen Schlüssel vermissen oder einen zusätzlichen haben hat, hat keine definierte Stelle in dieser Liste. Der Konverter meldet den problematischen Schlüssel und Zeilenindex, damit Sie die Datensätze zuerst normalisieren können – bewusst Lücken mit null füllen, wenn das Ihre Absicht ist.
Warum eine mehrzeilige INSERT-Anweisung und nicht eine pro Zeile?
Weniger Anweisungen, ein Parsing und typischerweise eine viel schnellere Ausführung – eine einzige mehrzeilige INSERT ist die Form, die die meisten Bulk-Loading-Leitfäden für das Seeding empfehlen. Das Ergebnis endet mit einem Semikolon, also ist es ein vollständiges Skript, und wenn Ihr Werkzeug eine Anweisung pro Zeile bevorzugt, sitzt jedes VALUES-Tupel in einer eigenen Zeile, also ist das Teilen eine kleine mechanische Bearbeitung.
Welche verwandten Tools sollten Sie als Nächstes nutzen?
- CSV zu SQL INSERTKonverter – läuft in Ihrem BrowserÖffnen
- JSON in CSV umwandelnDatensätze in eine Tabelle umwandeln, Verschachtelung inklusiveÖffnen
- CSV in JSON umwandelnTabellen-Export in Datensätze umwandeln, Anführungszeichen inklusiveÖffnen
- JSON formatierenEinrückung und Sortierung einstellen, Kommentare entfernenÖffnen
- JSON validierenSyntax prüfen mit exakter Zeile und Spalte, per Klick reparierenÖffnen
- Was ist JSONLeitfaden in verständlicher SpracheÖffnen