CSV in SQL und SQL in CSV

Komma-CSV im Browser in SQL-Tabellen und INSERT-Anweisungen umwandeln. SQLite, PostgreSQL oder MySQL wählen oder unterstützte Literal-Inserts zurück als CSV lesen. Die Verarbeitung bleibt lokal; eingegebenes SQL wird niemals ausgeführt.

Verarbeitung auf Ihrem Gerät. Kein Datei-Upload.

Schritt für Schritt

  1. Richtung und SQL-Dialekt auswählen. CSV mit Kopfzeile oder unterstützten SQL-Text einfügen; für CSV zusätzlich den gewünschten Tabellennamen eintragen.
  2. Textspalten beibehalten oder vorsichtige Ganzzahlerkennung wählen. Festlegen, ob leere CSV-Zellen leeren Text behalten oder SQL NULL werden.
  3. Konvertierung starten, Zeilenvorschau prüfen und SQL beziehungsweise CSV samt JSON-Bericht speichern. Erzeugte Anweisungen vor Verwendung mit eigenen Daten gesondert testen.

Das Beispiel prüfen

Das Beispiel contacts enthält zwei Zeilen und die drei Spalten id, postal und name. Für SQLite erkennt der Ganzzahlmodus id als INTEGER. Die Postleitzahlen 00123 und 01000 behalten ihre führenden Nullen, weil postal als TEXT bestehen bleibt. O'Reilly wird als Zeichenkette korrekt zitiert und nicht als zusätzliche SQL-Anweisung behandelt. Der zweite Name lautet Alex Example. Die Rückkonvertierung der erzeugten Inserts erhält alle sechs Datenzellen einschließlich Postleitzahlen und Apostroph. Der Bericht nennt zwei Zeilen, drei Spalten und keine NULL-Werte.

Das contacts-Beispiel mit zwei Zeilen behält 00123 als Text, erzeugt SQL-Inserts und erhält bei der Rückkonvertierung alle sechs Datenzellen.
Echte Vorgaben und Ergebnisse der Schaltfläche „Beispiel ausprobieren“.

Methode und Datenstruktur

Der CSV-Leser verarbeitet Kommas, doppelt zitierte Zellen, verdoppelte Anführungszeichen und Zeilenumbrüche innerhalb zitierter Werte. Jede Datenzeile muss zur Breite der Kopfzeile passen. Bezeichner und Werte werden getrennt und passend zum Dialekt zitiert. PostgreSQL erhält ausdrückliche Escape-Zeichenketten. MySQL nutzt UTF-8-Hexwerte mit Umwandlung nach utf8mb4, damit kein Backslash-Modus vorausgesetzt wird. Die optionale Ganzzahlerkennung prüft exakte vorzeichenbehaftete 64-Bit-Grenzen statt gerundeter JavaScript-Zahlen. Für SQL nach CSV liest ein eigener begrenzter Parser die Struktur, ohne eine Datenbank zu starten.

Quelle: SQLite: SQL literal values and string quoting

Unterstützung und Grenzen

Eingabe und Ausgabe dürfen jeweils höchstens 5 MB umfassen. Weitere Grenzen sind 10000 Zeilen, 100 Spalten, 20000 Datenzellen, 10000 Zeichen je Zelle und 63 UTF-8-Bytes je Bezeichner. SQL ist auf 250000 Tokens begrenzt. Unterstützt werden eine einfache CREATE-TABLE-Anweisung und Literal-INSERTs mit ausdrücklicher Spaltenliste für eine einzige Tabelle; CREATE darf fehlen. Allgemeine Dumps, Constraints, Abfragen, beliebige Funktionen und Binärspalten werden abgelehnt. Zahlenliterale behalten beim CSV-Export ihre Schreibweise, auch Dezimal- und Exponentnotation. SQL NULL wird zur leeren CSV-Zelle; CSV allein unterscheidet damit NULL nicht von leerem Text. Die Typerkennung erkennt nur kanonische Ganzzahlen; Datumsangaben und Dezimalwerte bleiben Text. MySQL-Bezeichner erlauben keine ergänzenden Unicode-Zeichen oder abschließenden Leerzeichen; zitierte Namen verwenden Backticks.

Daten bleiben auf Ihrem Gerät

Eingefügte Tabellen und Ergebnisse bleiben während der Konvertierung in diesem Browser. Es gibt keinen Upload, keine Datenbankverbindung und keinen öffentlichen Ergebnislink. Der JSON-Bericht enthält Spaltennamen, Zähler und Einstellungen, jedoch keine Zellwerte. Die Vorschau begrenzt die Anzeige auf 30 Zeilen, acht Spalten und 500 Zeichen je Zelle. Downloads enthalten die vollständigen unterstützten Daten.

Häufige Fragen

Gehen führende Nullen in Postleitzahlen verloren?

Standardmäßig bleiben alle Spalten Text. Auch die Ganzzahlerkennung lässt eine Spalte mit 00123 vollständig als Text bestehen.

Kann ich einen vollständigen Datenbank-Dump einfügen?

Nur die dokumentierte einfache CREATE- und Literal-INSERT-Teilmenge wird unterstützt. Andere Anweisungen oder Ausdrücke führen zu einer Fehlermeldung.

Wird eingefügtes SQL ausgeführt?

Nein. Das Werkzeug erzeugt Text oder liest unterstützte Inserts. Es verbindet sich mit keiner Datenbank und führt keine Anweisung aus.