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