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 |
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
- 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.
- 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.
- 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.
- 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
Ü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.