Kurz gesagt
Um eine CSV in INSERT-Statements umzuwandeln, wird aus jeder Datenzeile eine INSERT INTO-Anweisung. Der CSV-zu-SQL-Konverter erledigt das in Sekunden, escapt Apostrophe und Sonderzeichen sicher, macht aus leeren Feldern NULL und passt die Syntax an MySQL, PostgreSQL, SQLite oder SQL Server an. Alles läuft lokal im Browser, ohne Upload.
Was ist ein INSERT-Statement?
Ein INSERT-Statement ist der SQL-Befehl, mit dem du neue Datenzeilen in eine Datenbanktabelle einfügst. Die Grundform ist immer gleich: Du nennst die Zieltabelle, listest die Spalten auf und gibst dahinter die Werte an. Ein einzelnes Statement sieht zum Beispiel so aus:
INSERT INTO kunden (id, name, stadt) VALUES (1, 'Anna Schmidt', 'Hamburg');
Genau hier setzt die Umwandlung an: Eine CSV-Datei ist nichts anderes als eine Tabelle in Textform. Die erste Zeile liefert meist die Spaltennamen, jede weitere Zeile ist ein Datensatz. Wenn du eine CSV in INSERT-Statements umwandeln willst, wird also jede Datenzeile zu genau einer INSERT INTO-Anweisung mit den Werten dieser Zeile. Das klingt simpel, und im Kern ist es das auch. Die Tücken stecken im Detail: im Quoten von Texten, im Umgang mit leeren Feldern, in Sonderzeichen und in den feinen Unterschieden zwischen den SQL-Dialekten.
Ein wichtiger Punkt vorweg: Ein INSERT setzt voraus, dass die Zieltabelle bereits existiert und die passenden Spalten hat. Ist das nicht der Fall, brauchst du davor ein CREATE TABLE. Wie du das automatisch aus deinen Spalten ableitest, erklärt der Ratgeber CREATE TABLE aus CSV generieren. Das hier vorgestellte Tool kann auf Wunsch beides in einem Rutsch erzeugen, erst die Tabelle, dann die INSERTs.
CSV in INSERT-Statements umwandeln: in 4 Schritten
Du musst nichts installieren und kein Konto anlegen. Der CSV-zu-SQL-Konverter arbeitet komplett im Browser, ist kostenlos und ohne Limit. So erzeugst du ein INSERT-Statement aus CSV:
- CSV einfügen oder Datei wählen: Füge deine Daten per Copy-and-paste in das Eingabefeld ein oder wähle eine .csv- bzw. .txt-Datei von deinem Gerät. Die Datei wird lokal gelesen und nicht hochgeladen.
- Trennzeichen und Dialekt einstellen: Wähle das Trennzeichen, in deutschem Excel ist das oft das Semikolon statt des Kommas, und den Ziel-Dialekt (MySQL, PostgreSQL, SQLite oder SQL Server). Mehr zum Semikolon-Thema steht im Ratgeber CSV mit Semikolon in SQL.
- Optionen für die INSERTs setzen: Lege den Tabellennamen fest, entscheide zwischen einzelnen INSERTs und einem Batch-INSERT und prüfe kurz die erkannten Datentypen je Spalte.
- SQL kopieren oder herunterladen: Kopiere die fertigen INSERT-Statements in die Zwischenablage oder lade sie als .sql-Datei herunter und führe sie in deiner Datenbank aus.
Die Vorschau aktualisiert sich live, während du Optionen änderst. Eine ausführliche Gesamt-Anleitung zur Umwandlung findest du im Ratgeber CSV in SQL umwandeln.
Beispiel: aus CSV-Zeilen werden INSERTs
Am konkreten Beispiel wird das Prinzip am schnellsten klar. Nimm folgende kleine CSV mit drei Datensätzen:
id,name,stadt,aktiv
1,Anna Schmidt,Hamburg,true
2,O'Brien,Köln,false
3,Lena Groß,,true Daraus entstehen, wenn du als Dialekt MySQL wählst und die erste Zeile als Kopfzeile erkannt wird, diese drei INSERT-Statements:
INSERT INTO `daten` (`id`, `name`, `stadt`, `aktiv`) VALUES (1, 'Anna Schmidt', 'Hamburg', 1);
INSERT INTO `daten` (`id`, `name`, `stadt`, `aktiv`) VALUES (2, 'O''Brien', 'Köln', 0);
INSERT INTO `daten` (`id`, `name`, `stadt`, `aktiv`) VALUES (3, 'Lena Groß', NULL, 1);
Achte auf die Details, die das Tool automatisch richtig macht: Die Spalte id wird als Zahl erkannt und ohne Anführungszeichen geschrieben. Der Name O'Brien enthält ein Apostroph, das durch Verdoppelung zu O''Brien escaped wird, damit das Statement nicht abbricht. Das leere Feld bei Lena Groß wird zu NULL, nicht zu einem leeren Text. Und der Wahrheitswert true bzw. false wird in MySQL als 1 bzw. 0 ausgegeben, weil MySQL keinen echten Boolean-Typ wie PostgreSQL hat. Umlaute wie in Köln und Groß bleiben unverändert erhalten, solange die Datei als UTF-8 gespeichert ist.
Einzelne INSERTs oder Batch-INSERT?
Es gibt zwei Wege, wie die Statements aussehen können, und beide haben ihre Berechtigung. Bei einzelnen INSERTs erhält jede Zeile ihre eigene Anweisung, wie im Beispiel oben. Beim Batch-INSERT fasst eine einzige Anweisung viele Zeilen in einem gemeinsamen VALUES-Block zusammen:
INSERT INTO `daten` (`id`, `name`, `stadt`, `aktiv`) VALUES
(1, 'Anna Schmidt', 'Hamburg', 1),
(2, 'O''Brien', 'Köln', 0),
(3, 'Lena Groß', NULL, 1); Welche Variante passt wann? Eine kurze Orientierung:
| Kriterium | Einzelne INSERTs | Batch-INSERT |
|---|---|---|
| Import-Tempo | Langsamer bei vielen Zeilen | Deutlich schneller |
| Lesbarkeit im Diff | Sehr gut, eine Zeile je Satz | Kompakter, schwerer zu vergleichen |
| Fehler-Toleranz | Ein Fehler stoppt nur eine Zeile | Ein Fehler kann den ganzen Block kippen |
| Empfehlung | Kleine Datenmengen, Versionskontrolle | Große Importe, Performance wichtig |
Faustregel: Für ein paar Dutzend bis wenige Hundert Zeilen sind einzelne INSERTs angenehm übersichtlich. Geht es um Tausende oder Zehntausende Datensätze, ist der Batch-INSERT klar im Vorteil, weil die Datenbank weniger Einzelanweisungen verarbeiten muss. Das Tool teilt sehr große Batches sinnvoll in Blöcke auf, damit kein einzelnes Statement unhandlich groß wird.
Apostrophe, NULL und sicheres Escaping
Der häufigste Grund, warum selbst gebastelte INSERT-Statements scheitern, sind Sonderzeichen in Texten. Ein Textwert in SQL wird in einfache Anführungszeichen gesetzt: 'Hamburg'. Steht im Wert selbst ein Apostroph, etwa bei O'Brien oder Peter's Laden, beendet dieses Apostroph das Textliteral vorzeitig, und die Datenbank wirft einen Syntaxfehler oder, schlimmer, der Rest wird als SQL-Befehl interpretiert.
Die saubere Lösung ist die Verdopplung des Apostrophs: Aus O'Brien wird im Statement 'O''Brien'. Das ist der portable, vom ANSI-Standard vorgesehene Weg, der in allen vier hier behandelten Dialekten funktioniert. Das Tool wendet ihn automatisch auf jeden Textwert an. Genau dieser Mechanismus verhindert auch SQL-Injection, also das Einschleusen von Schadcode über manipulierte Daten. Warum das wichtig ist und wie es im Detail funktioniert, vertieft der Ratgeber CSV-Werte sicher escapen.
Zwei weitere Punkte sind beim Erzeugen von INSERTs entscheidend:
- NULL statt leerer String: Ein leeres Feld in der CSV wird zum Schlüsselwort
NULL(ohne Anführungszeichen), nicht zu''. NULL bedeutet kein Wert vorhanden, der leere String bedeutet ein vorhandener, aber leerer Text. Diese Unterscheidung ist in der Datenbank wichtig. - Zahlen ohne Anführungszeichen: Erkannte Zahlen und Wahrheitswerte werden unquoted geschrieben, Texte und Datumsangaben dagegen als String-Literal in Anführungszeichen. So bekommt jede Spalte die für ihren Typ korrekte Schreibweise.
Dialekt-Unterschiede bei INSERTs
Ein INSERT sieht in allen Datenbanken sehr ähnlich aus, aber zwei Details unterscheiden sich: wie Spalten- und Tabellennamen gequotet werden und wie Wahrheitswerte dargestellt sind. Das Tool stellt das automatisch um, sobald du den Dialekt wechselst.
| Dialekt | Quoting von Namen | Boolean |
|---|---|---|
| MySQL / MariaDB | Backticks: `name` | 1 / 0 |
| PostgreSQL | Doppelte Anführungszeichen | TRUE / FALSE |
| SQLite | Doppelte Anführungszeichen | 1 / 0 |
| SQL Server | Eckige Klammern: [name] | 1 / 0 (BIT) |
Das Quoting ist kein Schönheitsthema, sondern schützt vor einem konkreten Problem: Heißt eine Spalte zum Beispiel order, select oder group, kollidiert sie mit einem reservierten SQL-Schlüsselwort. Ohne Quoting bricht das Statement ab. Mit dem dialektgerechten Quoting funktioniert auch eine Spalte namens order problemlos. Welcher Dialekt für dein Projekt der richtige ist, beleuchtet der Ratgeber SQL-Dialekte im Vergleich. Wie du die fertigen Statements anschließend in deine Datenbank bekommst, zeigt am Beispiel von MySQL der Ratgeber CSV in MySQL importieren.
Ehrliche Grenzen und Stolperfallen
Ein gutes Tool sagt auch, wo seine Grenzen liegen. Die Erzeugung der INSERT-Statements selbst ist zuverlässig und vorhersehbar. Die größte Fehlerquelle ist nicht das INSERT, sondern die automatische Typ-Erkennung davor, denn sie ist eine Heuristik und kann danebenliegen.
- Führende Nullen gehen verloren: Postleitzahlen wie
01067oder Artikelnummern werden leicht als Zahl erkannt, wodurch die führende Null wegfällt. Zwinge solche Spalten bewusst auf Text. Die Hintergründe erklärt der Ratgeber Datentypen aus CSV erkennen. - Deutsche Datums- und Zahlenformate: Ein Datum wie
31.12.2024wird konservativ als Text behandelt, nicht als echtes Datum. Das deutsche Dezimalkomma wird erkannt und intern auf den Punkt normalisiert. - Die Tabelle muss passen: Existiert die Zieltabelle bereits, müssen Spaltennamen und Datentypen zu deinen Daten passen, sonst lehnt die Datenbank die INSERTs ab. Im Zweifel das mitgelieferte CREATE TABLE verwenden.
- Sehr große Dateien: Bei zweistelligen Megabyte oder Hunderttausenden Zeilen läuft alles im Arbeitsspeicher des Browsers. Das kann auf schwachen Geräten kurz haken, aber deine Daten bleiben dabei trotzdem lokal.
Wichtig zur Einordnung: Das Tool erzeugt ausschließlich SQL-Text. Es führt nichts aus und verbindet sich mit keiner Datenbank. Der eigentliche Import bleibt dein bewusster Schritt, und das ist gut so, weil du das erzeugte SQL vorher in Ruhe prüfen kannst.
Warum lokal im Browser der sichere Weg ist
CSV-Dateien enthalten oft echte, manchmal personenbezogene Daten: Kundenlisten, Bestellungen, Adressen. Viele Online-Konverter laden solche Dateien auf einen fremden Server. Aus Datenschutzsicht ist das heikel, denn du gibst die Daten aus der Hand. Dieser Konverter geht den anderen Weg: Parsen und Erzeugen der INSERTs laufen vollständig im Browser auf deinem Gerät. Es gibt keinen Upload, keinen Server, kein Konto und kein Limit. So bleibt die Kontrolle über deine Daten bei dir, ganz im Sinne der DSGVO. Bist du bereit, probiere es direkt am CSV-zu-SQL-Konverter aus.
Häufige Fragen
Wie wandle ich eine CSV in INSERT-Statements um?
Du fügst deine CSV in den Konverter ein oder wählst die Datei, stellst Trennzeichen und Ziel-Dialekt ein und erhältst sofort pro Zeile ein INSERT INTO mit korrekt escapten Werten. Die Umwandlung läuft komplett lokal im Browser, ohne Upload und ohne Anmeldung.
Brauche ich für INSERT-Statements auch ein CREATE TABLE?
Nur wenn die Zieltabelle noch nicht existiert. INSERT INTO setzt eine vorhandene Tabelle mit passenden Spalten voraus. Existiert sie noch nicht, erzeugt das Tool optional ein passendes CREATE TABLE direkt vor den INSERTs.
Was ist der Unterschied zwischen einzelnen INSERTs und Batch-INSERT?
Bei einzelnen INSERTs wird pro CSV-Zeile eine eigene Anweisung erzeugt, das ist maximal kompatibel und diff-freundlich. Beim Batch-INSERT fasst eine Anweisung viele Zeilen in einem VALUES-Block zusammen, das ist beim Import großer Datenmengen deutlich schneller.
Werden Apostrophe und Sonderzeichen in den INSERTs korrekt escaped?
Ja. Einfache Anführungszeichen werden verdoppelt, das ist der portable, injection-sichere ANSI-Weg für alle vier Dialekte. So bleiben Texte wie O'Brien oder Maße korrekt und brechen das Statement nicht ab.
Was passiert mit leeren Feldern in der CSV?
Leere Zellen werden zu NULL (dem Schlüsselwort, nicht zum leeren String). So unterscheidet die Datenbank sauber zwischen einem fehlenden Wert und einer leeren Zeichenkette.
Werden meine Daten beim Erzeugen der INSERTs hochgeladen?
Nein. Das Parsen der CSV und das Erzeugen der SQL-Statements passieren zu 100 Prozent im Browser. Deine Datei verlässt dein Gerät nicht, es gibt keinen Server-Upload, kein Konto und kein Limit.