mygems

CSV in SQL-INSERT-Anweisungen umwandeln

Eine CSV rein, ein .sql-Skript raus, das jede Datenbank ausführt.

  • PostgreSQL, MySQL, SQLite
  • Spaltentypen erkannt
  • Anführungszeichen korrekt maskiert
  • Nichts wird hochgeladen

1.Datei öffnen

CSV oder TSV. Hierher ziehen oder eine Datei auswählen.

Warum es das gibt

Import-Assistenten von Datenbanken sind heikel bei CSV-Dateien, und Kommandozeilen-Lader brauchen Dateizugriff, den der Datenbankserver oft nicht hat. Ein schlichtes .sql-Skript funktioniert überall, wo eine Abfrage läuft. Es von Hand zu erzeugen, ist allerdings der Punkt, an dem das Quoting schiefgeht: Ein Apostroph in einem Nachnamen bricht das ganze Skript, und ein nicht maskierter Backslash beschädigt in MySQL eine Zeile. Dieses Tool schreibt das Skript mit dem Escaping, das die jeweilige Datenbank tatsächlich braucht.

Was es kann

  • Schreibt eine CREATE-TABLE-Anweisung mit einem Typ für jede Spalte, festgelegt anhand aller ihrer Werte.
  • Schreibt die Zeilen als INSERT-Anweisungen mit mehreren Zeilen, in Stapeln einer Größe, die du wählst.
  • Setzt Namen in Anführungszeichen und maskiert Werte passend zur gewählten Datenbank, einschließlich der Backslashes von MySQL.
  • Schreibt leere Zellen als NULL und behält Spalten mit führenden Nullen oder sehr langen Zahlen als Text.
  • Kann alles in eine Transaktion packen, damit ein Fehler mittendrin die Datenbank im vorherigen Zustand lässt.

Warum Stapel

Ein INSERT pro Zeile läuft langsam, und ein INSERT für eine Million Zeilen ist für die meisten Server zu groß. Ein paar hundert Zeilen pro Anweisung sind schnell und bleiben unter den üblichen Grenzen für Paket- und Anweisungsgröße; senke den Wert, wenn dein Server sich beschwert.

Fragen

Welche Datenbanken werden unterstützt?
PostgreSQL, MySQL und MariaDB sowie SQLite. Die Skripte sind schlichtes SQL, andere Datenbanken, die dem Standard folgen, etwa SQL Server bei den INSERT-Anweisungen, nehmen sie deshalb meist mit kleinen Änderungen am CREATE TABLE an.
Wie werden die Spaltentypen gewählt?
Anhand aller Werte der Spalte. Eine Spalte mit ganzen Zahlen wird BIGINT, Dezimalzahlen werden ein Gleitkommatyp, true/false wird BOOLEAN, ISO-Datumswerte werden DATE, und alles andere, auch Zahlen mit führenden Nullen, wird TEXT. Du kannst das CREATE TABLE im Skript vor dem Ausführen bearbeiten.
Ist es sicher, das auf einer Produktionsdatenbank auszuführen?
Das Skript legt nur eine Tabelle an und fügt Zeilen ein. Lies es vorher, wie jedes Skript: Die Vorschau zeigt den Anfang, und den Tabellennamen wählst du selbst.

Die ausführlichere Antwort

Diese Seite erledigt die Aufgabe. Die Anleitung erklärt sie – auch die Teile, die ein Tool nicht für dich entscheiden kann.

SQL-Abfragen auf einer CSV-Datei ohne Datenbank ausführen (Anleitung 2026)Für ein GROUP BY brauchst du kein Postgres. So fragst du eine CSV mit DuckDB, SQLite, q oder dem Handy direkt ab und welches Tool wann passt.