araç köşesi

CSV zu SQL-INSERT

Aus einer CSV-Tabelle lauffähige INSERT-Anweisungen erzeugen: Hochkommas maskiert, leere Zellen als NULL

Ihre Daten bleiben bei Ihnen. Die Umwandlung läuft im Browser; nichts wird an einen Server gesendet.

So funktioniert es

Fügen Sie die CSV-Tabelle in das linke Feld ein; die INSERT-Anweisungen entstehen beim Tippen im rechten Feld. Die erste Zeile gilt als Kopfzeile, ihre Zellen werden zur Spaltenliste: Aus einem Kundenexport mit 120 Zeilen werden beim Einfügen 120 INSERT-Anweisungen. Spaltennamen werden für SQL angepasst — aus 'bestell datum' wird 'bestell_datum', denn ein Leerzeichen in einem unmaskierten Bezeichner bricht die Anweisung —, und die Statuszeile nennt die Anzahl der geänderten Namen. Für Werte gelten feste Regeln: Text steht in Hochkommas, ein Hochkomma im Text wird verdoppelt ('O''Brien'), leere Zellen werden NULL, Zahlen bleiben ohne Anführungszeichen. Maskierte CSV-Felder werden korrekt gelesen: Eine Zelle mit Semikolon oder Zeilenumbruch bleibt eine Zelle, sofern Sie sie in doppelte Anführungszeichen gesetzt haben. Steht das Trennzeichen auf automatisch, wird nicht nur die erste Zeile geprüft, sondern mehrere Zeilen zusammen: Es gewinnt der Kandidat, der überall gleich viele Spalten ergibt. Auch alle drei Zeilenenden werden gelesen — CR+LF von Windows, LF von macOS und Linux und das einzelne CR sehr alter Programme, das viele Werkzeuge für eine einzige lange Zeile halten. Enthält eine Zeile mehr Zellen als die Kopfzeile, bricht die Umwandlung ab und nennt Datenzeile und Zellenzahl — dahinter steckt fast immer ein nicht maskierter Trenner. Die Ausgabe kopieren Sie oder laden sie als .sql-Datei herunter und führen sie in Ihrem Datenbankwerkzeug aus.

Dieses Werkzeug ist auch als csv in sql umwandeln, csv zu sql insert, insert anweisungen aus csv erzeugen, excel tabelle in datenbank importieren, csv nach sql konverter bekannt.

Was ist INSERT-Anweisung?

INSERT ist der SQL-Befehl, der einer Tabelle eine neue Zeile hinzufügt, und besteht aus drei Teilen: Zieltabelle, Spaltenliste und Werte. INSERT INTO kunde (name, ort) VALUES ('Anna', 'Köln') zeigt alle drei. Die Spaltenliste ist formal freiwillig, sollte aber zur Gewohnheit werden: Ohne sie ordnet die Datenbank die Werte nach der Spaltenreihenfolge der Tabelle zu — wird später eine Spalte ergänzt, schreiben alte Anweisungen stillschweigend in das falsche Feld. Dieses Werkzeug schreibt die Spaltenliste immer mit, die Ausgabe übersteht also spätere Erweiterungen des Schemas.

Was ist NULL?

NULL ist in SQL das Zeichen für 'kein Wert' und unterscheidet sich sowohl von der Null als auch von der leeren Zeichenkette. Praktisch wird der Unterschied bei Vergleichen: Nichts ist gleich NULL, auch NULL selbst nicht, weshalb man leere Einträge mit IS NULL sucht und nicht mit einem Gleichheitszeichen; die meisten Aggregatfunktionen überspringen NULL-Zeilen, statt sie als Null zu zählen. Eine leere Zelle im CSV-Export heißt meist 'nicht erfasst', deshalb schreibt dieses Werkzeug NULL und keine leere Zeichenkette — der Unterschied wirkt sich auf jede spätere Auswertung aus.

Was ist Hochkomma maskieren (Escaping)?

Maskieren heißt, ein Zeichen mit besonderer Bedeutung so zu schreiben, dass das System es als Inhalt und nicht als Syntax liest. In SQL ist dieses Zeichen das einfache Hochkomma, weil es Textwerte begrenzt: Jedes Hochkomma im Wert muss verdoppelt werden. Das ist der Weg der Norm und verhält sich in MySQL, PostgreSQL, SQLite und SQL Server gleich. Die Maskierung mit Backslash ist eine Zusatzfunktion von MySQL und nicht übertragbar. Fehlt die Maskierung, ist das Bild immer dasselbe: Jeder Datensatz mit Apostroph bricht ab oder landet unvollständig in der Tabelle.

Was ist der Unterschied zwischen einzelnen INSERTs und einem Sammel-INSERT?

Beide schreiben dieselben Zeilen in dieselbe Tabelle; sie unterscheiden sich in Geschwindigkeit und Fehlerverhalten. Bei einer Anweisung je Zeile wird jede Anweisung einzeln geparst, was bei Zehntausenden Zeilen spürbar länger dauert — dafür scheitert eine Zeile mit falschem Typ oder doppeltem Schlüssel allein, alle übrigen werden geschrieben, und die Fehlermeldung zeigt genau, welche Zeile es war. Beim Sammel-INSERT mit vielen VALUES wird einmal geparst, es gibt nur einen Weg zum Server, und das Laden großer Mengen ist um ein Vielfaches schneller. Der Preis: Die Anweisung ist eine Einheit, eine einzige fehlerhafte Zeile kann die Ablehnung des gesamten Blocks bedeuten, und das Suchen kostet Zeit. Faustregel: ungeprüfte Daten zeilenweise laden, geprüfte Bestände in einer Anweisung.

Warum Hochkommas verdoppelt werden

SQL fasst Textwerte in einfache Hochkommas. Steht im Wert selbst eines — O'Brien, l'hôtel, 'Anna's Notiz' —, liest die Datenbank dort das Ende der Zeichenkette und versucht den Rest als Befehl zu verstehen. Das Ergebnis ist ein Syntaxfehler oder, schlimmer, ein Datensatz, der abgeschnitten gespeichert wird.

Die normgerechte Lösung ist die Verdopplung: Jedes Hochkomma im Wert wird zweimal geschrieben, die Datenbank liest es als ein Zeichen zurück. Dieses Werkzeug wendet das auf jeden Wert an. Die Verdopplung ist etwas anderes als die Maskierung mit Backslash — Letztere ist eine Voreinstellung von MySQL und nicht portabel, die Verdopplung verhält sich in jedem System gleich.

Unterschiede zwischen MySQL, PostgreSQL und SQLite

Die erzeugte Ausgabe ist bewusst schlicht gehalten, damit sie in allen drei Systemen läuft. Diese Unterschiede sollten Sie vor dem Ausführen kennen:

  • Datum und Uhrzeit werden als Text geschrieben. Das deutsche Format 24.08.2026 akzeptiert PostgreSQL nicht ohne Weiteres; je nach Spaltentyp ist eine Umwandlung (TO_DATE) nötig
  • Backslash: MySQL wertet ihn in der Voreinstellung als Maskierzeichen, PostgreSQL und SQLite nicht. Enthalten Ihre Daten Dateipfade, prüfen Sie die Ausgabe zuerst in MySQL
  • Bezeichner werden unterschiedlich maskiert — MySQL mit Backtick, PostgreSQL und SQLite mit doppelten Anführungszeichen. Die Namen hier werden auf ASCII-Buchstaben, Ziffern und Unterstriche reduziert, deshalb kommt die Ausgabe ganz ohne Maskierung aus
  • Wahrheitswerte stehen als Text in Hochkommas. SQLite kennt keinen booleschen Typ, MySQL erwartet 1/0 — wandeln Sie solche Spalten nach dem Laden um
  • Dezimaltrennzeichen: 1250.50 wird als blanke Zahl geschrieben; 1.234 und 1.250,50 bleiben in Hochkommas, denn genau drei Ziffern hinter dem Zeichen können ebenso eine Tausendergruppe wie eine Nachkommastelle sein — beim Raten verschiebt sich der Betrag um das Tausendfache

Welche Einstellung für welchen Zweck?

Alle fünf Einstellungen richten sich danach, wo die Anweisungen laufen sollen; die Voreinstellungen decken den häufigsten Fall ab.

  • Ein paar hundert Zeilen in eine Testdatenbank → je Zeile ein INSERT (scheitert eine Zeile, kommen die übrigen an)
  • Zehntausende Zeilen in den Produktivbetrieb → ein INSERT mit vielen VALUES, deutlich schneller
  • Alle Spalten sind VARCHAR oder TEXT → alles in Hochkommas
  • Telefonnummern, Postleitzahlen, Artikelnummern mit führender Null → diese Zellen setzt das Werkzeug ohnehin in Hochkommas (führende Null oder mehr als 15 Ziffern bleiben Text); ist die ganze Spalte VARCHAR, bleibt alles in Hochkommas trotzdem die klarere Wahl
  • Daten aus Excel kopiert → Trenner auf Semikolon oder Tabulator stellen; die automatische Erkennung notfalls überschreiben
  • Export ohne Kopfzeile → 'keine Spaltennamen' wählen; die Spalten heißen dann c1, c2 und werden in der Ausgabe umbenannt

Dieses Werkzeug erzeugt kein CREATE TABLE

Die Ausgabe besteht ausschließlich aus INSERT-Anweisungen; die Tabelle muss bereits existieren. Das ist eine bewusste Entscheidung, denn Spaltentypen aus einer CSV-Datei zu erraten ist heikel: Eine Spalte aus Ziffern sieht numerisch aus, kann aber eine Postleitzahl sein, ein zwölfstelliges Feld sprengt einen Integer, und auf zwei Datumszeilen folgt in der dritten womöglich Freitext.

Ein falsch geratener Typ erzeugt eine Tabelle, die richtig aussieht und still Daten verliert — verschwundene führende Nullen sind der Klassiker. Legen Sie die Tabelle selbst an, entscheiden Sie über jeden Spaltentyp bewusst; dieses Werkzeug bringt die Zeilen dann korrekt maskiert hinein.

Häufige Fragen

Wie erzeuge ich SQL-INSERT-Anweisungen aus einer CSV-Datei?

Fügen Sie die Tabelle in das linke Feld ein und tragen Sie den Zieltabellennamen ein; die Anweisungen erscheinen sofort im rechten Feld. Sie kopieren sie oder laden eine .sql-Datei herunter und führen sie in Ihrem Datenbankwerkzeug aus. Die Tabelle muss vorher angelegt sein.

Machen Namen mit Apostroph Probleme?

Nein. Ein Hochkomma im Wert — O'Brien, l'hôtel — wird nach SQL-Norm verdoppelt und von der Datenbank als ein Zeichen zurückgelesen. Ohne Verdopplung endete die Anweisung genau an dieser Stelle und liefe auf einen Fehler oder einen abgeschnittenen Datensatz hinaus.

Wird eine leere Zelle zu NULL oder zu einer leeren Zeichenkette?

Sie wird NULL, denn eine leere Zelle im CSV-Export bedeutet fast immer 'kein Wert vorhanden'. Brauchen Sie tatsächlich leere Zeichenketten, laden Sie die Daten zuerst und führen anschließend ein gezieltes UPDATE auf dieser Spalte aus.

Werden Datumsspalten korrekt übernommen?

Datumswerte werden unverändert als Text in Hochkommas gesetzt. Ist die Zielspalte ein Datumstyp, muss das Format zur Datenbank passen: Die ISO-Schreibweise 2026-08-24 lesen alle drei Systeme, die deutsche Schreibweise 24.08.2026 erfordert meist eine Umwandlung.

Werden meine Daten an einen Server geschickt?

Nein. Einlesen und SQL-Erzeugung laufen vollständig in Ihrem Browser. Kundenlisten, Preisexporte oder Personaldaten verlassen diese Seite nicht und werden nirgends gespeichert.