CSV zu SQL Konverter

Das Einfügen von CSV-Daten in eine Datenbank bedeutet normalerweise, entweder ein Ladewerkzeug zu starten oder COPY / LOAD DATA INFILE-Befehle zu schreiben, die nur mit lokalen Dateien funktionieren. Für kleine Datensätze, Dutzende, Hunderte, ein paar Tausend Zeilen, sind einfache INSERT-Anweisungen, die Sie in jede SQL-Konsole einfügen können, oft schneller. Dieses Tool nimmt Ihre CSV, nimmt einen Tabellennamen und erzeugt pro Zeile ein INSERT mit in Backticks gesetzten Bezeichnern und einfach in Anführungszeichen gesetzten Werten, die sicher ausgeführt werden können.

Wie das SQL zusammengestellt wird

  1. 1

    CSV einfügen

    Standard-CSV mit optionaler Kopfzeile. Der Parser verarbeitet zitierte Zellen mit eingebetteten Trennzeichen.

  2. 2

    Tabellenname festlegen

    Nicht-alphanumerische Zeichen im Tabellennamen werden durch Unterstriche ersetzt; fällt auf `my_table` zurück, wenn leer.

  3. 3

    Spalten kommen aus der Kopfzeile

    Wenn der Kopfzeilenmodus aktiviert ist, wird Zeile 1 zur Spaltenliste. Andernfalls werden die Spalten `column_1`, `column_2` usw. benannt.

  4. 4

    Ein INSERT pro Datenzeile

    Jede Zeile wird zu `INSERT INTO table (cols) VALUES (...)`. Werte sind einfach in Anführungszeichen gesetzt und interne Anführungszeichen werden verdoppelt.

Dialekt, Zitierung und wann man etwas anderes verwenden sollte

Der Generator erzeugt SQL im MySQL-Stil mit Backticks um Bezeichner und einfachen Anführungszeichen um Werte. Die meisten Datenbanken akzeptieren es mit geringfügigen Anpassungen.

Dialekt-Spickzettel

Datenbank Bezeichner-Zitierung Anmerkungen
MySQL Backticks Funktioniert unverändert.
MariaDB Backticks Funktioniert unverändert.
PostgreSQL doppelte Anführungszeichen Ersetzen Sie ` durch " vor der Ausführung.
SQLite doppelte Anführungszeichen Ersetzen Sie ` durch " oder lassen Sie die Bezeichner-Zitierung weg.
SQL Server eckige Klammern Ersetzen Sie ` durch []; achten Sie auf N'...' für Unicode.

Wie Werte escaped werden

Alle Werte sind einfach in Anführungszeichen gesetzt und alle eingebetteten einfachen Anführungszeichen werden verdoppelt (O'Brien wird zu 'O''Brien'). Das ist der SQL-92-Weg und funktioniert in jeder gängigen Datenbank. Der Konverter führt keine Typumwandlung durch, alles wird als String-Literal ausgegeben, sodass die implizite Umwandlung der Datenbank '42' in eine Ganzzahl umwandelt, wenn die Spalte INT ist.

Tipps für saubere Importe

  • Erstellen Sie zuerst die Tabelle. Der Konverter gibt nur INSERT-Anweisungen aus, nicht CREATE TABLE. Kombinieren Sie es mit einem Schema, das Sie manuell definieren oder aus Ihrem ORM generieren.
  • Teilen Sie große Dateien in Abschnitte. Fügen Sie 500-1000 Zeilen auf einmal ein, wenn Ihr SQL-Client eine Größenbeschränkung für Anweisungen hat.
  • In einer Transaktion einfügen. Für alles über ein paar hundert Zeilen, umrahmen Sie das Einfügen mit BEGIN; und COMMIT; (oder START TRANSACTION; / COMMIT;). Viel schneller als jede Anweisung automatisch zu bestätigen.

Wann man die SQL-Generierung überspringen sollte

Wenn Ihre Datei mehr als ~50.000 Zeilen hat, sind native Bulk-Loader (COPY in Postgres, LOAD DATA INFILE in MySQL, bcp in SQL Server) um ein Vielfaches schneller als gescriptete INSERTs. Dieses Tool ist für schnelle Importe, Testdatensätze und einmalige Migrationen gedacht.

Häufig gestellte Fragen

Nein. Es gibt nur INSERT-Anweisungen aus. Definieren Sie das Schema selbst mit CREATE TABLE im Voraus, so behalten Sie die Kontrolle über Spaltentypen, Längen und Einschränkungen, anstatt den Konverter raten zu lassen.

Mit einer Änderung: Ersetzen Sie die Backtick-Bezeichner-Zitate um Tabellen- und Spaltennamen durch doppelte Anführungszeichen. Werte sind einfach in Anführungszeichen gesetzt und werden unverändert in jedem SQL-92-Dialekt ausgeführt.

Einfache Anführungszeichen innerhalb von Werten werden verdoppelt (O''Brien), was der Standard-SQL-Escape ist. Backslashes, Prozentzeichen und Unterstriche werden wörtlich durchgereicht, eine Sonderbedeutung erhalten sie nur in LIKE-Mustern.

Ja, die CSV wird an unseren Server gesendet, damit das SQL generiert werden kann. Sie wird nicht gespeichert und nicht zum Seitenlink hinzugefügt.

Verwandte Tools