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.

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

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.
ツールくん

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