CSV-zu-SQL-Konverter (INSERT-Anweisungsgenerator)

Konvertiert CSV-Dateien in SQL-INSERT- und CREATE-TABLE-Anweisungen. Unterstützt die Dialekte MySQL, PostgreSQL und SQLite mit automatischer Erkennung des Spaltentyps (Ganzzahl, Dezimalzahl, Text). Die Umwandlung erfolgt vollständig im Browser; es werden keine Daten an einen Server gesendet.

Trennzeichen
Erste Zeile als Kopfzeile verwenden
Tabellenname
SQL-Dialekt
Auch CREATE-TABLE-Anweisung erzeugen
Leere Werte als NULL behandeln
Zeilen zu einer einzigen INSERT-Anweisung zusammenfassen


            
            Kopiert!
            
          

Geben Sie CSV-Daten ein, um hier das erzeugte SQL zu sehen.

Wie eine CSV-Zeile einer INSERT-Anweisung entspricht

Eine CSV-Zeile name,age,city
Resultierende INSERT-Anweisung INSERT INTO `my_table` (`name`, `age`, `city`) VALUES ('Alice', 30, 'Tokyo');

Wird die erste Zeile als Kopfzeile verwendet, wird jede folgende Zeile zu einer INSERT-Anweisung, die die Spaltennamen der Kopfzeile benennt. Als Ganzzahl oder Dezimalzahl erkannte Spalten werden als Zahlen ohne Anführungszeichen ausgegeben, alle anderen Spalten als einfach in Anführungszeichen gesetzte Zeichenketten.

Was der CSV-zu-SQL-Konverter leistet

Wer eine CSV-Datei in eine Datenbank übernehmen möchte, steht schnell vor derselben lästigen Aufgabe: für jede Zeile von Hand eine INSERT-Anweisung zu formulieren. Genau das übernimmt dieses Werkzeug für Sie. Es liest Ihre CSV-Daten ein und wandelt jede Zeile automatisch in eine vollständige INSERT-Anweisung um. Dabei werden alle Datenzeilen einer Spalte gemeinsam ausgewertet, um zu erkennen, ob es sich um Ganzzahlen, Dezimalzahlen oder Text handelt – auf dieser Grundlage lässt sich bei Bedarf gleich die passende CREATE-TABLE-Anweisung mit erzeugen, sodass die Zieltabelle nicht vorher separat angelegt werden muss.

Da sich Datenbanksysteme in Details wie den Anführungszeichen für Tabellen- und Spaltennamen sowie den Bezeichnungen der Datentypen unterscheiden, deckt der Konverter die drei gängigen Dialekte MySQL, PostgreSQL und SQLite ab und passt die Ausgabe automatisch an Ihre Auswahl an. Einfache Anführungszeichen innerhalb der Werte werden nach dem SQL-Standardverfahren automatisch maskiert, sodass die erzeugten Anweisungen unverändert lauffähig sind. Da sämtliche Berechnungen direkt im Browser stattfinden, verlassen Ihre CSV-Daten zu keinem Zeitpunkt Ihr Gerät – ein wichtiger Aspekt, wenn Sie mit echten Produktionsdaten arbeiten.

So erzeugen Sie INSERT-Anweisungen aus einer CSV-Datei

  1. CSV-Daten einfügen Fügen Sie Ihre CSV-Daten in das Eingabefeld ein. Bei tabulatorgetrennten Daten stellen Sie das Trennzeichen entsprechend auf Tabulator um.
  2. Tabellenname und Dialekt festlegen Tragen Sie den Namen der Zieltabelle ein und wählen Sie den passenden Datenbankdialekt aus. Die Anführungszeichen für Bezeichner passen sich automatisch an.
  3. Ausgabeoptionen wählen Legen Sie fest, ob eine CREATE-TABLE-Anweisung mit erzeugt wird, leere Felder als NULL gelten und ob mehrere Zeilen zu einer Anweisung zusammengefasst werden sollen.
  4. Kopieren und ausführen Kopieren Sie das erzeugte SQL und fügen Sie es in Ihren Datenbank-Client ein. Bei sehr vielen Zeilen empfiehlt es sich, die Ausführung in mehrere Abschnitte aufzuteilen.

Tipps für die Nutzung

  • Der Spaltentyp (Ganzzahl, Dezimalzahl, Text) wird automatisch ermittelt, indem alle Datenzeilen dieser Spalte geprüft werden. Ist auch nur ein einziger Wert nicht numerisch, wird die gesamte Spalte als Texttyp behandelt.
  • Aktivieren Sie "Zeilen zu einer einzigen INSERT-Anweisung zusammenfassen", entsteht eine einzige Anweisung `INSERT INTO ... VALUES (...), (...), (...);`, wodurch beim Laden großer Datenmengen weniger Ausführungen nötig sind.
  • MySQL setzt Bezeichner in Backticks (`), während PostgreSQL und SQLite doppelte Anführungszeichen (") verwenden. Der Anführungszeichenstil wechselt automatisch je nach gewähltem SQL-Dialekt.
  • Deaktivieren Sie "Leere Werte als NULL behandeln", werden Textspalten stattdessen als leere Zeichenkette ('') und numerische Spalten als NULL ausgegeben.

Einsatzmöglichkeiten des CSV-zu-SQL-Konverters

Testdaten für die Entwicklung vorbereiten

Daten, die Sie in einer Tabellenkalkulation zusammengestellt haben, lassen sich direkt in INSERT-Anweisungen umwandeln. Für kleinere Testszenarien ist das oft schneller, als einen eigenen Seeder im Framework zu schreiben.

Stammdaten in eine neue Datenbank überführen

Aus einem Altsystem exportierte CSV-Dateien lassen sich zusammen mit einer passenden CREATE-TABLE-Anweisung in ein Format bringen, das direkt in die neue Datenbank übernommen werden kann.

Spaltentypen vorab prüfen

Ein Blick auf die automatisch erkannten Typen zeigt Ihnen, ob eine Spalte unerwartete Werte enthält. Wird eine eigentlich numerische Spalte als Text erkannt, ist das ein deutlicher Hinweis auf fehlerhafte Einträge.

Unterschiede zwischen den SQL-Dialekten vergleichen

Wenden Sie dieselbe CSV-Datei nacheinander auf verschiedene Dialekte an, um die Unterschiede bei Anführungszeichen und Typnamen unmittelbar am konkreten Beispiel zu sehen.

Begriffe rund um den Datenimport per SQL

INSERT-Anweisung
Eine SQL-Anweisung, mit der eine oder mehrere neue Zeilen in eine Tabelle eingefügt werden. Spaltennamen und die dazugehörigen Werte werden einander zugeordnet.
CREATE-TABLE-Anweisung
Eine SQL-Anweisung, mit der eine neue Tabelle samt Spaltennamen und Datentypen angelegt wird. Sie wird benötigt, wenn die Zieltabelle noch nicht existiert.
SQL-Dialekt
Die syntaktischen Unterschiede zwischen einzelnen Datenbanksystemen, etwa bei den Zeichen zum Einschließen von Bezeichnern oder bei der Schreibweise der Datentypen.
NULL
Ein besonderer Wert, der das Fehlen eines Wertes ausdrückt. Da NULL sich von einer leeren Zeichenkette unterscheidet, muss beim Import festgelegt werden, wie leere Felder behandelt werden sollen.
Escaping (Maskierung)
Das Verfahren, mit dem Zeichen, die in SQL eine besondere syntaktische Bedeutung haben, als reiner Textinhalt kenntlich gemacht werden. Betroffen sind vor allem einfache Anführungszeichen innerhalb von Werten.
Bulk Insert (Mehrzeilen-Insert)
Eine Technik, bei der mehrere Zeilen mit einer einzigen INSERT-Anweisung eingefügt werden. Da weniger Anweisungen geparst und weniger Commits ausgeführt werden müssen, läuft der Import spürbar schneller.

Häufig gestellte Fragen

Jeder Wert dieser Spalte über alle Datenzeilen hinweg wird geprüft: Sind alle Ganzzahlen, wird die Spalte zu INTEGER; sind alle Dezimalzahlen, wird sie zu REAL; andernfalls (Text oder gemischte Werte) wird sie zu TEXT. Dieser erkannte Typ wird direkt in der erzeugten CREATE-TABLE-Anweisung verwendet.

Ja. Wählen Sie unter "SQL-Dialekt" PostgreSQL oder SQLite aus, werden Bezeichner-Anführungszeichen (doppelte Anführungszeichen) und Typnamen entsprechend der jeweiligen Datenbank erzeugt.

Gemäß der SQL-Standardkonvention werden einfache Anführungszeichen automatisch verdoppelt (''), sodass die resultierende Anweisung unverändert ausgeführt werden kann.

Nein. Die gesamte Umwandlung erfolgt per JavaScript in Ihrem Browser, und die eingegebenen CSV-Inhalte werden niemals an einen Server übertragen. Sie können das Tool auch mit sensiblen Daten bedenkenlos nutzen.
Tool-kun

Übrigens – warum zusammengefasste INSERT-Anweisungen schneller sind

Die von diesem Tool angebotene Option "Zeilen zu einer einzigen INSERT-Anweisung zusammenfassen" (`INSERT INTO t VALUES (1,'a'), (2,'b'), ...;`) kann erheblich schneller ausgeführt werden als das Absetzen einer einzelnen INSERT-Anweisung pro Zeile. Das liegt daran, dass der Aufwand für das Parsen und Planen jeder SQL-Anweisung sowie die Kosten für Transaktions-Commits, die sich sonst pro Anweisung wiederholen würden, reduziert werden.

Allerdings besitzt MySQL ein `max_allowed_packet`-Limit, und PostgreSQL hat eine ähnliche Obergrenze für den Kommunikationspuffer. Werden zu viele Zeilen in eine einzige INSERT-Anweisung gepackt, kann dieses Limit überschritten werden und zu einem Fehler führen. In der Praxis ist es üblich, Anweisungen alle paar hundert bis paar tausend Zeilen aufzuteilen.

Das Laden von CSV-Daten in eine Testdatenbank wird in Entwicklungs-Workflows oft als "Seeding" bezeichnet, und viele Webframeworks – darunter Laravels Seeder und Factories – bieten dafür eigens Mechanismen an, so verbreitet ist diese Aufgabe. Ein schneller Konverter wie dieser bleibt für kleine Prüfungen oder Datenmigrationen praktisch, bei denen sich der Aufbau dieser vollständigen Infrastruktur nicht lohnt.