CSV-zu-SQLkonverter

Anleitung · 9 Min. Lesezeit

CSV in MySQL importieren: per Tool, phpMyAdmin oder LOAD DATA INFILE

CSV in MySQL importieren: die drei sichersten Wege im Vergleich. Mit fertigen INSERT-Statements aus dem Konverter, über phpMyAdmin oder mit LOAD DATA INFILE. Schritt für Schritt, kostenlos und ohne Upload.

Jan-Tristan Rudat
Jan-Tristan Rudat Veröffentlicht Geprüft

Kurz gesagt

Es gibt drei verlässliche Wege, eine CSV in MySQL zu importieren: erstens fertige CREATE TABLE plus INSERT-Statements aus einem Konverter erzeugen und ausführen, zweitens den CSV-Import in phpMyAdmin, drittens LOAD DATA INFILE in der Kommandozeile. Der erste Weg ist für die meisten der einfachste und sicherste: keine Server-Rechte, keine Spalten von Hand, kein Upload. Erzeugen Sie Ihr SQL lokal im Browser und führen Sie es in MySQL oder MariaDB aus.

CSV in MySQL importieren: drei Wege im Überblick

Eine CSV-Datei besteht aus Zeilen, die durch ein Trennzeichen in Spalten geteilt sind. Genau so funktioniert auch eine Datenbanktabelle: Spalten oben, Datensätze darunter. Der Import ist deshalb im Kern nichts anderes als das Übertragen dieser Tabelle in MySQL. Schwierig wird es nur an drei Stellen: beim Anlegen der Tabelle mit den richtigen Datentypen, beim Trennzeichen und beim Escaping von Sonderzeichen. Welcher Weg für Sie der beste ist, hängt davon ab, welche Zugänge Sie zu Ihrem MySQL-Server haben.

Wer mit MySQL noch wenig vertraut ist, sollte sich vorab kurz ansehen, was hinter den beiden Formaten steckt. Die Grundlagen erklären wir in Was ist eine CSV-Datei und Was ist SQL. Hier konzentrieren wir uns auf die Praxis.

Weg Geeignet für Voraussetzung
SQL erzeugen + ausführen Fast jeden Fall, auch Shared Hosting Irgendein SQL-Zugang (phpMyAdmin oder CLI)
phpMyAdmin-Import Kleine bis mittlere Dateien, Web-Oberfläche phpMyAdmin-Zugang, Tabelle passend
LOAD DATA INFILE Sehr große Dateien, eigener Server Datei-Zugriff und FILE-Recht auf dem Server

Weg 1: SQL erzeugen und ausführen (empfohlen)

Der robusteste Weg, eine CSV in MySQL zu importieren, geht über fertige SQL-Statements. Sie wandeln die CSV einmal in SQL um und führen dieses SQL in Ihrer Datenbank aus. Der große Vorteil: Sie müssen die Tabelle nicht vorher von Hand anlegen, die Datentypen werden erkannt, und das Escaping von Apostrophen passiert automatisch. Dieser Weg funktioniert überall, auch beim günstigen Webhosting ohne Server-Konsole.

  1. CSV in SQL umwandeln: Öffnen Sie den CSV-zu-SQL-Konverter, fügen Sie Ihre CSV ein oder wählen Sie die Datei. Stellen Sie als Dialekt MySQL/MariaDB ein. Das Tool erzeugt ein CREATE TABLE mit erkannten Datentypen und dazu die INSERT-Statements, jeweils mit Backtick-Quoting für die Spaltennamen.
  2. Optionen prüfen: Vergeben Sie einen Tabellennamen, aktivieren Sie bei Bedarf DROP TABLE IF EXISTS oder eine Auto-Increment-id. Prüfen Sie die angezeigten Spaltentypen, dazu gleich mehr im Abschnitt zu den Datentypen.
  3. SQL übernehmen: Kopieren Sie den erzeugten SQL-Text oder laden Sie ihn als .sql-Datei herunter.
  4. In MySQL ausführen: Fügen Sie das SQL in phpMyAdmin im Reiter SQL ein und klicken Sie auf OK. Oder lesen Sie die Datei in der Kommandozeile ein.

Auf der Kommandozeile geht das so. Erst die Datenbank wählen, dann die SQL-Datei einlesen:

mysql -u benutzer -p meine_datenbank < daten.sql

# oder bereits in der mysql-Konsole:
USE meine_datenbank;
SOURCE /pfad/zu/daten.sql;

Wie genau das erzeugte SQL aussieht und warum die einzelnen INSERT-Zeilen so aufgebaut sind, lesen Sie im Ratgeber INSERT-Statements aus CSV erzeugen. Wie das Tool die Tabellenstruktur ableitet, erklärt CREATE TABLE aus CSV generieren.

Weg 2: CSV-Import in phpMyAdmin

phpMyAdmin bringt einen eigenen CSV-Import mit. Das ist praktisch, wenn Sie ohnehin in der Web-Oberfläche arbeiten und keine SQL-Statements erzeugen möchten. Der Haken: phpMyAdmin legt die Spalten nicht immer optimal an und kennt das deutsche Semikolon nicht von allein. So gehen Sie vor:

  1. Datenbank wählen und in den Reiter Importieren wechseln. Alternativ legen Sie zuerst eine Tabelle mit passenden Spalten an und importieren dann hinein.
  2. Datei auswählen und als Format CSV einstellen.
  3. Trennzeichen anpassen: Im Feld Spalten getrennt mit tragen Sie bei deutschem Excel ein Semikolon ; statt des Standard-Kommas ein. Das ist der häufigste Stolperstein.
  4. Erste Zeile als Spaltennamen: Aktivieren Sie die Option, dass die erste Zeile die Spaltennamen enthält, falls Ihre CSV eine Kopfzeile hat.
  5. Zeichensatz auf utf-8 stellen, damit Umlaute korrekt ankommen, und den Import starten.

phpMyAdmin importiert die Werte meist als reinen Text in eine neue Tabelle und benennt die Spalten generisch, wenn keine Kopfzeile erkannt wird. Wenn Sie sauber typisierte Spalten wollen (also INT für Zahlen, DATE für Datumswerte), ist Weg 1 mit dem Konverter klar im Vorteil, weil dort die Datentypen schon im CREATE TABLE stehen. Mehr zum Semikolon-Thema steht in CSV mit Semikolon in SQL.

Weg 3: LOAD DATA INFILE

LOAD DATA INFILE ist der schnellste Weg, eine CSV in MySQL zu laden, vor allem bei sehr großen Dateien mit Hunderttausenden Zeilen. MySQL liest die Datei direkt vom Datei-System ein, ohne dass für jede Zeile ein einzelnes Statement verarbeitet werden muss. Der Preis dafür sind höhere Anforderungen: Sie brauchen Datei-Zugriff auf dem Server und das passende Recht. Im Shared Hosting ist dieser Befehl deshalb oft gesperrt.

Die Tabelle muss vorher existieren. Ein typischer Aufruf für eine CSV mit Semikolon, Kopfzeile und Windows-Zeilenenden sieht so aus:

LOAD DATA INFILE '/pfad/zu/daten.csv'
INTO TABLE meine_tabelle
CHARACTER SET utf8mb4
FIELDS TERMINATED BY ';'
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 ROWS;

Wichtig sind die einzelnen Klauseln: FIELDS TERMINATED BY bestimmt das Trennzeichen (hier Semikolon), ENCLOSED BY die Anführungszeichen um Textfelder, LINES TERMINATED BY das Zeilenende (bei Windows-CSV oft \r\n), und IGNORE 1 ROWS überspringt die Kopfzeile. Liegt die CSV auf Ihrem eigenen Rechner statt auf dem Server, nutzen Sie LOAD DATA LOCAL INFILE; dafür muss sowohl im Client als auch im Server die Option local_infile aktiviert sein.

Ehrlicher Hinweis: LOAD DATA INFILE legt keine Tabelle an und erkennt keine Datentypen. Sie müssen die Spalten und Typen vorher selbst per CREATE TABLE definieren. Genau diesen Schritt nimmt Ihnen der Konverter ab. Eine gängige Kombination ist deshalb: Tabellenstruktur aus dem Konverter holen, Tabelle anlegen, und nur die reine Datenmenge per LOAD DATA INFILE einlesen.

Trennzeichen, Umlaute und Datentypen richtig setzen

Drei Punkte entscheiden darüber, ob ein CSV-Import in MySQL sauber gelingt oder in Frust endet. Wer sie kennt, spart sich die meisten Fehlversuche.

Das Trennzeichen

Deutsche Excel-Versionen speichern CSV in der Regel mit Semikolon, weil das Komma hier als Dezimalzeichen dient. Internationale Werkzeuge und der MySQL-Standard erwarten dagegen das Komma. Landet beim Import die ganze Zeile in einer einzigen Spalte, ist fast immer das falsche Trennzeichen schuld. Im Konverter erkennt die Trennzeichen-Automatik Komma, Semikolon, Tab und Pipe meist von selbst; im Zweifel stellen Sie es manuell ein.

Umlaute und Zeichensatz

Damit ä, ö, ü und ß nicht zu kryptischen Zeichen werden, sollten CSV, Tabelle und Verbindung alle auf UTF-8 stehen. Legen Sie die Tabelle am besten mit CHARACTER SET utf8mb4 an. utf8mb4 deckt im Gegensatz zum alten utf8 auch Emojis und seltene Zeichen vollständig ab.

Datentypen und führende Nullen

Der Konverter rät die Datentypen aus den Werten: nur Ziffern werden zu INT, Kommazahlen zu DOUBLE, ISO-Datumswerte zu DATE oder DATETIME, alles andere zu VARCHAR oder TEXT. Das ist eine Heuristik und kann danebenliegen. Klassiker sind Postleitzahlen und Artikelnummern: 01067 wird als Zahl erkannt und verliert die führende Null. Solche Spalten sollten Sie bewusst als Text behandeln. Wie die Erkennung im Detail arbeitet und wo ihre Grenzen liegen, behandelt Datentypen aus CSV richtig erkennen.

Typische Fehler beim CSV-Import in MySQL und ihre Lösung

Symptom Ursache und Lösung
Ganze Zeile in einer Spalte Falsches Trennzeichen, auf Semikolon umstellen
Kryptische Zeichen statt Umlaute Zeichensatz auf utf8mb4 setzen
Syntaxfehler bei Apostrophen im Text Apostroph verdoppeln, der Konverter tut das automatisch
Führende Null verschwindet Spalte als VARCHAR statt INT anlegen
LOAD DATA INFILE verweigert FILE-Recht oder local_infile fehlt, dann Weg 1 nutzen

Das Thema Apostrophe und Escaping ist nicht nur Komfort, sondern auch Sicherheit. Ein nicht escapter Apostroph kann ein INSERT zerstören oder im schlimmsten Fall für eine SQL-Injection missbraucht werden. Warum die Verdopplung des Apostrophs der portable, sichere Weg ist, erklärt CSV-Werte sicher escapen. Der Konverter verdoppelt Apostrophe automatisch, sodass Texte mit Wörtern wie O'Brien oder Maße ohne Fehler eingefügt werden.

Warum die Umwandlung lokal im Browser läuft

Viele Online-Konverter laden Ihre CSV auf einen fremden Server. Bei Kundendaten, Adresslisten oder Bestelldaten ist das heikel, denn Sie geben personenbezogene Daten aus der Hand. Unser CSV-zu-SQL-Konverter arbeitet anders: Das Parsen der CSV und das Erzeugen der SQL-Statements passieren zu 100 Prozent lokal in Ihrem Browser. Es gibt keinen Upload, keinen Server, kein Konto und kein Limit. Ihre Datei verlässt das Gerät nicht. Erst das fertige SQL führen Sie selbst in Ihrer Datenbank aus. Das macht den Weg auch bei sensiblen Daten DSGVO-freundlich, mehr dazu in CSV sicher in SQL umwandeln.

Häufige Fragen

Wie importiere ich eine CSV-Datei am einfachsten in MySQL?

Am einfachsten wandeln Sie die CSV zuerst in fertige CREATE-TABLE- und INSERT-Statements um und führen dieses SQL dann in phpMyAdmin oder der mysql-Kommandozeile aus. So müssen Sie keine Spalten und Datentypen von Hand anlegen und vermeiden Fehler beim Trennzeichen oder beim Escaping.

Was ist der Unterschied zwischen LOAD DATA INFILE und INSERT-Statements?

LOAD DATA INFILE liest eine CSV direkt vom Datei-System des Servers in eine bestehende Tabelle und ist sehr schnell, braucht aber Server-Rechte und eine vorbereitete Tabelle. INSERT-Statements sind portabler, können die Tabelle gleich anlegen und laufen überall, auch im Shared Hosting, sind bei riesigen Dateien aber langsamer.

Warum landet meine ganze CSV-Zeile in einer einzigen Spalte?

Das ist fast immer ein Trennzeichen-Problem. Deutsches Excel speichert CSV oft mit Semikolon statt Komma, während MySQL und viele Tools Komma erwarten. Stellen Sie das Trennzeichen passend ein, dann werden die Spalten korrekt getrennt.

Werden meine Daten beim Umwandeln in SQL hochgeladen?

Bei csv-sql.de nicht. Die CSV wird ausschließlich lokal im Browser gelesen und in SQL umgewandelt. Es gibt keinen Upload, keinen Server und kein Konto. Erst das fertige SQL führen Sie selbst in Ihrer MySQL-Datenbank aus.

Wie gehe ich mit Umlauten und Sonderzeichen um?

Achten Sie auf UTF-8. Legen Sie die Tabelle mit utf8mb4 an und stellen Sie beim Import die Kodierung auf UTF-8. Apostrophe in Werten werden vom Konverter automatisch verdoppelt. So bleiben ä, ö, ü und ß erhalten und es entstehen keine Importfehler.

Weiterführende Artikel

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige