- 1 1. Was Sie in diesem Artikel erreichen können
- 2 2. Arten von MySQL-Imports und wann man jede verwendet
- 3 3. Import einer SQL-Datei (Der schnellste Weg zum Erfolg)
- 4 4. CSV‑Import (Wichtigste: Schnellste Methode mit LOAD DATA)
- 5 5. Top 4 Gründe, warum INFILE fehlschlägt (Wichtigster Abschnitt)
- 5.1 5.1 Unterschied zwischen INFILE und LOCAL INFILE
- 5.2 5.2 local_infile ist deaktiviert (Ursache von ERROR 1148)
- 5.3 5.3 secure_file_priv‑Einschränkung
- 5.4 5.4 Unzureichende Berechtigungen (FILE‑Berechtigung / OS‑Berechtigungen)
- 5.5 5.5 Falsche Pfadspezifikation
- 5.6 ✔ Schneller Fehlersuchablauf für INFILE‑Probleme
- 6 6. Import über GUI (Workbench / phpMyAdmin)
- 7 7. Fehlersuche (Nach Fehler: Ursache → Schnellste Lösung)
- 8 8. Praktische Techniken für große Datensätze (ausfallsichere Operationen)
- 8.1 8.1 Datei aufteilen und in Stufen importieren
- 8.2 8.2 Indexe und Fremdschlüssel vorübergehend deaktivieren
- 8.3 8.3 Autocommit steuern (Beschleunigung)
- 8.4 8.4 Empfohlene Einstellungen für Massendatenimporte
- 8.5 8.5 Zeitüberschreitungen erhöhen
- 8.6 8.6 Staging‑Tabellen‑Strategie (sichere Operationen)
- 8.7 ✔ Stabilstes Praxismuster
- 8.8 ✔ Fazit für große Datenmengen
- 9 9. FAQ (häufige Fragen)
- 9.1 Q1. Kann ich nur bestimmte Spalten aus einer CSV importieren?
- 9.2 Q2. Wie behandle ich leere Zellen als NULL?
- 9.3 Q3. Wie überspringe ich die Kopfzeile?
- 9.4 Q4. Wie kann ich die Importergebnisse validieren?
- 9.5 Q5. Welche Methode ist die schnellste?
- 9.6 Q6. Ich erhalte einen Zeilenende-Fehler unter Windows
- 9.7 Q7. Ich erhalte einen secure_file_priv-Fehler
- 9.8 ✔ FAQ‑Zusammenfassung
- 10 10. Zusammenfassung
1. Was Sie in diesem Artikel erreichen können
Viele Menschen, die nach „MySQL-Datenimport“ suchen, befinden sich in einer Situation, in der sie möchten:
- „eine .sql-Datei wiederherstellen“
- „eine CSV importieren“
- „es stoppt mit einem Fehler“
- „es funktioniert nicht in Workbench oder phpMyAdmin“
Mit anderen Worten, Sie wollen eine Lösung, die Sie sofort anwenden können.
Zuerst hier die kürzesten „Erfolgswege“ nach Ziel.
🔹 Schnellster Befehl zum Importieren einer SQL-Datei (.sql)
Für Backup-Wiederherstellungen oder Server-Migrationen ist das der schnellste Weg.
mysql -u username -p database_name < backup.sql
Dinge, die Sie vorher überprüfen sollten
- Existiert die Zieldatenbank?
- Hat der verbindende Benutzer Berechtigungen für die Zieldatenbank?
- Die Kodierung der SQL-Datei (normalerweise UTF-8)
Falls die Datenbank noch nicht erstellt wurde:
CREATE DATABASE example_db;
🔹 Schnellster Weg, eine CSV-Datei zu importieren (empfohlen)
Für den schnellen Import großer Datenmengen ist LOAD DATA ideal.
LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(id, name, @age)
SET age = NULLIF(@age,'');
Wichtige Punkte
- Windows-Zeilenenden →
'\r\n' - Wenn es eine Kopfzeile gibt →
IGNORE 1 LINES - Leere Strings in NULL umwandeln →
NULLIF() - Viele Umgebungen erfordern LOCAL (später erklärt)
🔹 Wenn Sie über eine GUI importieren möchten
MySQL Workbench
- Server → Data Import → Datei auswählen → ausführen
phpMyAdmin
- Zieldatenbank auswählen → Import → Datei wählen → ausführen
⚠️ Allerdings ist für große Dateien und zuverlässige Fehlerbehandlung die CLI (Befehlszeile) zuverlässiger.
🔹 3 Muss-Überprüfungen vor dem Import
1. Zeichensatz (wichtigster Punkt)
SHOW VARIABLES LIKE 'character_set%';
Empfohlen: utf8mb4
2. Einstellungen, die INFILE-bezogene Fehler verursachen
SHOW VARIABLES LIKE 'local_infile';
SHOW VARIABLES LIKE 'secure_file_priv';
3. Berechtigungsprüfung
SHOW GRANTS FOR 'user'@'localhost';
✔ Was kommt als Nächstes in diesem Artikel
- Detaillierte Wege zum Importieren von SQL-Dateien
- Praktische CSV-Import-Techniken
- Eine vollständige Analyse, warum INFILE fehlschlägt
- Schnellste Fixes nach Fehlertyp
- Praktische Techniken für große Datensätze

2. Arten von MySQL-Imports und wann man jede verwendet
Es gibt mehrere Wege, in MySQL zu importieren, aber die beste Wahl hängt von Ihrem Anwendungsfall ab.
Wenn Sie das richtig verstehen, können Sie unnötige Probleme vermeiden.
2.1 Wann man einen SQL-Dump (.sql) importiert
Häufige Anwendungsfälle
- Wiederherstellung aus einem Backup
- Server-Migration
- Anwenden von produktionsähnlichen Daten auf eine Dev-Umgebung
- Wiedereinfuhr von Daten, die mit
mysqldumpexportiert wurden
Merkmale
- Stellt die gesamte Tabellenstruktur + Daten wieder her
- Hohe Reproduzierbarkeit
- Kann Transaktionen enthalten
- Im Allgemeinen die sicherste Option
Typische Methoden
mysql -u user -p dbname < dump.sql
Oder innerhalb von MySQL:
SOURCE /path/to/dump.sql;
Am besten für
- Vollständige Wiederherstellung einer bestehenden DB
- Wiederaufbau einer Produktionsumgebung
- Datenladen für CI/CD-Umgebungen
2.2 Wann man CSV / TSV importiert
Häufige Anwendungsfälle
- Empfangen von Daten aus externen Systemen
- Importieren von Excel-Daten
- ETL-Verarbeitung
- Aktualisieren nur spezifischer Tabellen
Merkmale
- Lädt nur Daten (Schema muss separat existieren)
- Schnell (
LOAD DATAist extrem schnell) - Erlaubt Transformationslogik während des Imports
Typische Methode
LOAD DATA LOCAL INFILE 'file.csv'
INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';
Am besten für
- Geplante Batch-Jobs
- Datenintegration
- Hochgeschwindigkeits-Eingabe großer Zeilenanzahlen
2.3 Wann man GUI-Tools verwendet
Häufige Tools:
- MySQL Workbench
- phpMyAdmin
Merkmale
- Intuitive Bedienung
- Anfängerfreundlich
- Geeignet für kleine Datensätze
Warnhinweise
- Upload-Limits (phpMyAdmin)
- Timeouts
- Instabil bei großen Datenmengen
- Schwieriger, Fehler zu analysieren
2.4 Vergleich nach Methode (praktische Sichtweise)
| Method | Speed | Stability | Large-file support | Error analysis | Recommendation |
|---|---|---|---|---|---|
| mysql command | ◎ | ◎ | ◎ | ◎ | ★★★★★ |
| LOAD DATA | ◎ | ○ | ◎ | ○ | ★★★★★ |
| Workbench | ○ | ○ | △ | △ | ★★★ |
| phpMyAdmin | △ | △ | × | △ | ★★ |
✔ Empfohlene Optionen in der Praxis
- Backup wiederherstellen → mysql-Befehl
- High‑speed CSV‑Import → LOAD DATA LOCAL INFILE
- Kleine, einmalige Aufgaben → GUI
Wenn Sie unsicher sind, die Wahl der CLI (Command Line) ist die stabilste Option.
3. Import einer SQL-Datei (Der schnellste Weg zum Erfolg)
Das Importieren einer .sql‑Datei ist die gängigste Methode für Backup‑Wiederherstellungen und Server‑Migrationen.
Hier ist das Ziel, „so schnell wie möglich erfolgreich zu sein“, daher konzentrieren wir uns nur auf die praktischen Schritte, die in der realen Arbeit verwendet werden.
3.1 Wiederherstellung in einer Zeile (die gängigste Methode)
Dies ist die zuverlässigste und schnellste Methode.
mysql -u username -p database_name < backup.sql
Nach dem Ausführen werden Sie nach dem Passwort gefragt.
✔ Vorprüfungen (zur Vermeidung von Fehlern)
① Existiert die Datenbank?
SHOW DATABASES;
Wenn sie nicht existiert:
CREATE DATABASE example_db;
② Hat der Benutzer die Berechtigungen?
SHOW GRANTS FOR 'user'@'localhost';
Wenn Berechtigungen fehlen:
GRANT ALL PRIVILEGES ON example_db.* TO 'user'@'localhost';
FLUSH PRIVILEGES;
③ Dateikodierung
In der Regel ist es UTF‑8.
Wenn Sie unlesbare Zeichen sehen, geben Sie die Kodierung explizit an.
mysql --default-character-set=utf8mb4 -u user -p dbname < backup.sql
3.2 Ausführen innerhalb von MySQL (SOURCE‑Befehl)
Diese Methode wird ausgeführt, nachdem Sie sich bei MySQL eingeloggt haben.
mysql -u user -p
USE example_db;
SOURCE /path/to/backup.sql;
Wann es nützlich ist
- Wenn Sie nur einen Teil einer SQL‑Datei ausführen möchten
- Wenn Sie den genauen Fehlerort ermitteln möchten
- Wenn Sie das Ausführungsprotokoll visuell bestätigen möchten
3.3 Häufige Fehler und Lösungen
❌ FEHLER 1049: Unbekannte Datenbank
→ Die DB existiert nicht
→ Führen Sie CREATE DATABASE aus
❌ FEHLER 1045: Zugriff verweigert
→ Unzureichende Berechtigungen
→ Prüfen Sie mit SHOW GRANTS
❌ Es stoppt mitten im Vorgang / Fehlerort ist unklar
Behebung:
- Überprüfen Sie den Anfang und das Ende der Datei
head backup.sql tail backup.sql
- Überprüfen Sie die Zeilen unmittelbar vor dem Fehler
- Wenn die Datei groß ist, teilen Sie sie und führen Sie sie in Teilen aus
split -l 10000 backup.sql part_
3.4 Tipps zur Stabilisierung großer SQL‑Importe
① Transaktionseinstellungen prüfen
Prüfen Sie, ob SET autocommit=0; enthalten ist
② Wenn Fremdschlüssel‑Constraints das Problem sind
SET FOREIGN_KEY_CHECKS=0;
-- import
SET FOREIGN_KEY_CHECKS=1;
③ SQL‑Modus prüfen
SELECT @@sql_mode;
Der Strict‑Modus könnte den Import beeinflussen.
✔ Praktische Empfehlungen
- Produktionswiederherstellung → mysql‑Befehl
- Debugging → SOURCE
- Große Dateien → CLI + ggf. Aufteilen
4. CSV‑Import (Wichtigste: Schnellste Methode mit LOAD DATA)
Beim Importieren von CSV‑Daten ist die schnellste und praktischste Methode LOAD DATA.
Bei großen Datensätzen ist sie bei weitem schneller als INSERT‑Anweisungen.
Hier stellen wir das korrekte „Copy‑Paste‑und‑ausführen“-Format bereit und heben häufige Fehlerquellen hervor.
4.1 Zuerst: CSV‑Voraussetzungen
Vor dem Importieren sollten Sie Folgendes prüfen.
✔ Trennzeichen
- Komma
, - Tabulator
\t - Semikolon
;(häufig in ausländischen Daten)
✔ Anführungszeichen
- Ob Werte wie
"value"in doppelten Anführungszeichen eingeschlossen sind
✔ Zeilenenden
- Linux / Mac →
\n - Windows →
\r\n
✔ Zeichensatz / Kodierung
- Empfohlen:
utf8mb4 - Auf Windows erstellte CSV kann Shift‑JIS sein
- UTF‑8 mit BOM kann manchmal Fehler verursachen
Beispielprüfung:
file -i example.csv
4.2 Kopierfertige Grundform (CSV mit Header)
LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(id, name, @age)
SET age = NULLIF(@age,'');
Bedeutung jeder Option
LOCALLiest eine Datei von der Client‑Seite (in vielen Umgebungen erforderlich)IGNORE 1 LINESÜberspringt die Kopfzeile@ageEine temporäre Variable, die verwendet wird, um den Wert vor dem Speichern zu transformierenNULLIF()Wandelt leere Zeichenketten in NULL um
4.3 Nur die benötigten Spalten importieren
Wenn die CSV unnötige Spalten enthält:
LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(id, @dummy, age);
Ordne unerwünschte Spalten @dummy zu.
4.4 Daten und Typen beim Import konvertieren
Beispiel: konvertiere MM/DD/YYYY → MySQL‑Format
LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(@date_col, name)
SET date_col = STR_TO_DATE(@date_col, '%m/%d/%Y');
4.5 Für tab‑getrennte (TSV)
FIELDS TERMINATED BY '\t'
4.6 Leistung weiter verbessern (bei großen Daten)
Indexe vorübergehend deaktivieren
ALTER TABLE example_table DISABLE KEYS;
-- Run LOAD DATA
ALTER TABLE example_table ENABLE KEYS;
Fremdschlüssel vorübergehend deaktivieren
SET FOREIGN_KEY_CHECKS=0;
-- Run LOAD DATA
SET FOREIGN_KEY_CHECKS=1;
Warum LOCAL oft erforderlich ist
LOAD DATA INFILE→ liest eine Datei auf der ServerseiteLOAD DATA LOCAL INFILE→ liest eine Datei auf der Client‑Seite
In vielen Umgebungen hat die Verwendung von LOCAL eine höhere Erfolgsquote.
✔ Praktisch empfohlene Form
In den meisten Fällen:
LOAD DATA LOCAL INFILE
+ explicit delimiter
+ explicit line endings
+ IGNORE 1 LINES
+ type conversion
Dies ist der stabilste Ansatz.
5. Top 4 Gründe, warum INFILE fehlschlägt (Wichtigster Abschnitt)
Die meisten LOAD DATA INFILE‑Fehler werden durch Einstellungen, Berechtigungen oder ein Missverständnis des Quellorts verursacht.
Wenn Sie das verstehen, können Sie die meisten Fehler sofort beheben.
5.1 Unterschied zwischen INFILE und LOCAL INFILE
Dies ist das grundlegende Schlüsselkonzept.
| Command | Where it reads from | Typical use |
|---|---|---|
LOAD DATA INFILE | File on the server | A fixed path on the server |
LOAD DATA LOCAL INFILE | File on the client | A CSV on your local PC |
Häufige Missverständnisse
- Versuch, eine lokale PC‑Datei mit
INFILEzu lesen, und scheitern - Die Datei existiert nicht auf dem Server
✔ Schnellregel
- CSV auf Ihrem eigenen PC →
LOCAL - CSV auf dem Server platziert →
INFILE
Im Zweifelsfall ist die Verwendung von LOCAL die sicherste Wahl.
5.2 local_infile ist deaktiviert (Ursache von ERROR 1148)
Beispiel‑Fehler:
ERROR 1148 (42000): The used command is not allowed with this MySQL version
Ursache:
local_infile ist AUS
✔ Aktuelle Einstellung prüfen
SHOW VARIABLES LIKE 'local_infile';
✔ Beim Verbinden aktivieren (Client‑Seite)
mysql --local-infile=1 -u user -p
✔ Dauerhaft aktivieren (Konfigurationsdatei)
Zu my.cnf oder my.ini hinzufügen:
[mysqld]
local_infile=1
Sie müssen den Server neu starten.
5.3 secure_file_priv‑Einschränkung
Dies tritt auf, wenn LOAD DATA INFILE (ohne LOCAL) verwendet wird.
Prüfen:
SHOW VARIABLES LIKE 'secure_file_priv';
Beispielausgabe
/var/lib/mysql-files/
→ Sie können nur Dateien innerhalb dieses Verzeichnisses lesen.
✔ Beheben
- Verschieben Sie die CSV in das erlaubte Verzeichnis
- Oder verwenden Sie
LOCAL
5.4 Unzureichende Berechtigungen (FILE‑Berechtigung / OS‑Berechtigungen)
Beispiel‑Fehler:
ERROR 1045: Access denied
Prüfen:
SHOW GRANTS FOR 'user'@'localhost';
✔ Erforderliche Berechtigung
GRANT FILE ON *.* TO 'user'@'localhost';
※ Aus Sicherheitsgründen sollten Sie mit den minimal notwendigen Berechtigungen arbeiten.
5.5 Falsche Pfadspezifikation
- Verwenden Sie einen absoluten Pfad, keinen relativen Pfad
- Unter Windows wird
C:/path/file.csvempfohlen - Vorwärtsschrägstriche sind sicherer als Rückwärtsschrägstriche
✔ Schneller Fehlersuchablauf für INFILE‑Probleme
- Haben Sie
LOCALhinzugefügt? SHOW VARIABLES LIKE 'local_infile';SHOW VARIABLES LIKE 'secure_file_priv';- Berechtigungen prüfen (SHOW GRANTS)
- Pfad prüfen (absoluter Pfad)
In dieser Reihenfolge können Sie die meisten Fälle lösen.
6. Import über GUI (Workbench / phpMyAdmin)
Die Befehlszeile ist am stabilsten, aber es gibt Situationen, in denen man GUI‑Werkzeuge verwenden möchte.
Hier konzentrieren wir uns auf die häufigen Punkte, an denen Menschen in der Praxis stecken bleiben.
6.1 Import mit MySQL Workbench
SQL‑Datei importieren (Backup‑Wiederherstellung)
- Workbench starten
- Menü → Server → Datenimport
- „Import aus selbstenthaltener Datei“ auswählen
- Die
.sql‑Datei auswählen - Das Ziel‑Schema (Datenbank) auswählen
- „Start Import“ klicken
CSV importieren (pro Tabelle)
- Rechtsklick auf die Zieltabelle
- Tabellendaten‑Import‑Assistent auswählen
- Die CSV‑Datei auswählen
- Trennzeichen festlegen und angeben, ob eine Kopfzeile vorhanden ist
- Ausführen
⚠ Häufige Gründe, warum Workbench hängen bleibt
- Große Dateien (Hunderte MB oder mehr)
- Zeitüberschreitungen
- Kodierungsabweichungen
secure_file_priv‑Einschränkungen
👉 Für große Dateien oder Produktionsumgebungen wird die CLI empfohlen.
6.2 Import mit phpMyAdmin
Schritte
- Die Zieldatenbank auswählen
- Den Reiter „Import“ öffnen
- Eine Datei auswählen
- Das Format auswählen (SQL / CSV)
- Ausführen
⚠ phpMyAdmin‑Einschränkungen
① Upload‑Größenbeschränkung
upload_max_filesize
post_max_size
Große Dateien werden fehlschlagen.
② Zeitüberschreitung
max_execution_timeLange laufende Importe können mittendrin stoppen.
③ Speicher‑ausgelaufen
memory_limit6.3 Wann Sie GUI verwenden sollten
- Kleine Datensätze (einige MB)
- Entwicklungsumgebungen
- Temporäre Einmal‑Arbeiten
6.4 Wann Sie CLI verwenden sollten (empfohlen)
- Produktionsumgebungen
- Zehner‑MB oder mehr
- Große CSV‑Importe
- Wenn Sie Fehlersuche benötigen
- Server‑zu‑Server‑Migrationen
✔ Praktisches Fazit
GUI ist „einfach“, aber CLI ist bei weitem besser für Stabilität, Reproduzierbarkeit und den Umgang mit großen Dateien.
Für die Fehlersuche wird das Erlernen von CLI‑Operationen letztlich empfohlen.
7. Fehlersuche (Nach Fehler: Ursache → Schnellste Lösung)
Die meisten MySQL‑Importfehler sind stark strukturiert.
Hier ordnen wir sie in der Reihenfolge „Ursache → erste Aktion → Verifikationsbefehl“.
7.1 ERROR 1148 (42000)
Der verwendete Befehl ist mit dieser MySQL‑Version nicht erlaubt
🔎 Ursache
LOAD DATA LOCAL INFILEist deaktiviertlocal_infileist AUS
✅ Schnellste Lösung
① Aktuelle Einstellungen prüfen
SHOW VARIABLES LIKE 'local_infile';
② Beim Verbinden aktivieren (Client‑seitig)
mysql --local-infile=1 -u user -p
③ Dauerhaft aktivieren (falls nötig)
[mysqld]
local_infile=1
→ MySQL neu starten
7.2 ERROR 1366
Ungültiger Zeichenfolgenwert
🔎 Ursache
- Kodierungsabweichung
- Inkonsistenz zwischen utf8 und utf8mb4
- Gemischtes Shift‑JIS
✅ Schnellste Lösung
① Aktuelles Zeichensatz prüfen
SHOW VARIABLES LIKE 'character_set%';
② Tabelle zu utf8mb4 konvertieren
ALTER TABLE example_table CONVERT TO CHARACTER SET utf8mb4;
③ Beim Import explizit angeben
mysql --default-character-set=utf8mb4 -u user -p db < file.sql
7.3 ERROR 1062
Doppelter Eintrag
🔎 Ursache
- Doppelte Primärschlüssel
- Verletzung einer UNIQUE‑Einschränkung
✅ Korrekturoptionen
Option 1: Duplikate ignorieren
LOAD DATA LOCAL INFILE 'file.csv'
INTO TABLE example_table
IGNORE;
Option 2: Bei Duplikaten aktualisieren
INSERT INTO example_table (id, name)
VALUES (1,'John')
ON DUPLICATE KEY UPDATE name=VALUES(name);
Option 3: Staging‑Tabelle verwenden
CREATE TEMPORARY TABLE temp LIKE example_table;
-- LOAD into temp first
INSERT INTO example_table
SELECT * FROM temp;
7.4 ERROR 1045
Zugriff für Benutzer verweigert
🔎 Ursache
- Unzureichende DB‑Berechtigungen
- Unzureichendes FILE‑Privileg
- Unzureichende OS‑Berechtigungen für den Pfad
✅ Prüfen
SHOW GRANTS FOR 'user'@'localhost';
✅ Beispiel erforderliche Berechtigungen
GRANT ALL PRIVILEGES ON example_db.* TO 'user'@'localhost';
FLUSH PRIVILEGES;
※ Seien Sie vorsichtig beim Gewähren des FILE‑Privilegs.
7.5 Es stoppt mittendrin bei großen Dateien
🔎 Ursache
- Zeitüberschreitung
- Speicher voll
- PHP‑Grenzen (phpMyAdmin)
✅ Schnellste Gegenmaßnahmen
Zeitüberschreitungen erhöhen
SET GLOBAL net_read_timeout=600;
SET GLOBAL net_write_timeout=600;
Datei aufteilen
split -l 100000 large.csv part_
✔ Fehlerbehebungsablauf (schnellste)
- Überprüfen Sie die Kodierung
- Überprüfen Sie
local_infile - Überprüfen Sie
secure_file_priv - Überprüfen Sie die Berechtigungen
- Überprüfen Sie Zeilenenden (
\n/\r\n)
In dieser Reihenfolge können Sie die meisten Probleme lösen.
8. Praktische Techniken für große Datensätze (ausfallsichere Operationen)
Beim Importieren von Hunderttausenden bis Millionen von Zeilen können die üblichen Methoden langsam, stoppen oder fehlschlagen.
Hier sind stabile Techniken, die in der Produktion häufig verwendet werden.
8.1 Datei aufteilen und in Stufen importieren
Das Einspeisen riesiger CSV/SQL‑Dateien in einem Durchgang kann Speicher‑ und Zeitüberschreitungsprobleme verursachen.
✔ Linux / Mac
split -l 100000 large.csv part_
→ In 100.000 Zeilen pro Teil aufteilen
✔ Windows (PowerShell‑Beispiel)
Get-Content large.csv -TotalCount 100000 > part_1.csv
✔ Vorteile gestufter Importe
- Einfacheres erneutes Versuchen nach einem teilweisen Fehlschlag
- Einfachere Lokalisierung des Fehlers
- Stabilere Serverauslastung
8.2 Indexe und Fremdschlüssel vorübergehend deaktivieren
Während des Imports werden Indexaktualisierungen oft zum Engpass.
✔ Indexe vorübergehend deaktivieren
ALTER TABLE example_table DISABLE KEYS;
-- LOAD DATA
ALTER TABLE example_table ENABLE KEYS;
※ Hauptsächlich für MyISAM. Begrenzte Wirkung für InnoDB.
✔ Fremdschlüssel deaktivieren
SET FOREIGN_KEY_CHECKS=0;
-- import
SET FOREIGN_KEY_CHECKS=1;
8.3 Autocommit steuern (Beschleunigung)
SET autocommit=0;
-- LOAD DATA
COMMIT;
SET autocommit=1;
8.4 Empfohlene Einstellungen für Massendatenimporte
SET UNIQUE_CHECKS=0;
SET FOREIGN_KEY_CHECKS=0;
SET AUTOCOMMIT=0;
Nach dem Import:
COMMIT;
SET UNIQUE_CHECKS=1;
SET FOREIGN_KEY_CHECKS=1;
SET AUTOCOMMIT=1;
⚠ In der Produktion vorsichtig verwenden.
8.5 Zeitüberschreitungen erhöhen
SET GLOBAL net_read_timeout=600;
SET GLOBAL net_write_timeout=600;
8.6 Staging‑Tabellen‑Strategie (sichere Operationen)
Anstatt direkt in die Produktionstabelle zu importieren, verwenden Sie zuerst eine Validierungstabelle.
CREATE TABLE staging LIKE example_table;
LOAD DATA LOCAL INFILE 'file.csv' INTO TABLE staging;
Nach der Validierung:
INSERT INTO example_table
SELECT * FROM staging;
✔ Stabilstes Praxismuster
- In eine Staging‑Tabelle laden
- Zeilenanzahl prüfen
- Constraints validieren
- Auf Produktion anwenden
- Protokolle speichern
✔ Fazit für große Datenmengen
- Verwenden Sie CLI, wann immer möglich
- Importe aufteilen
- Durch Staging gehen
- Constraints vorübergehend deaktivieren
- Protokolle prüfen
So bleiben Importe selbst bei Millionen von Zeilen stabil.
9. FAQ (häufige Fragen)
Hier sind schnelle, praktische Antworten auf häufig gesuchte MySQL‑Importfragen.
Q1. Kann ich nur bestimmte Spalten aus einer CSV importieren?
Ja, das können Sie.
Sie können unnötige Spalten einer Variablen (z. B. @dummy) zuordnen und sie ignorieren.
LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(id, @dummy, age);
Wenn Sie nur bestimmte Spalten möchten, stellen Sie sicher, dass Sie die Spaltenreihenfolge explizit angeben.
Q2. Wie behandle ich leere Zellen als NULL?
Verwenden Sie NULLIF().
LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(name, @age)
SET age = NULLIF(@age,'');
Dies konvertiert leere Zeichenketten (“) zu NULL.
Q3. Wie überspringe ich die Kopfzeile?
IGNORE 1 LINES
Beispiel:
LOAD DATA LOCAL INFILE '/path/to/example.csv'
INTO TABLE example_table
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
Q4. Wie kann ich die Importergebnisse validieren?
✔ Zeilenanzahl prüfen
SELECT COUNT(*) FROM example_table;
✔ Auf Warnungen/Fehler prüfen
MySQL‑Warnungen prüfen:
SHOW WARNINGS;
✔ Staging-Tabellen-Strategie (empfohlen)
Lade zuerst in eine Staging-Tabelle und wende sie dann auf die Produktion an.
Q5. Welche Methode ist die schnellste?
Fazit:
- CSV → LOAD DATA LOCAL INFILE (schnellste)
- Backup‑Wiederherstellung → mysql‑Befehl
GUI ist praktisch, aber CLI gewinnt in Bezug auf Geschwindigkeit und Stabilität.
Q6. Ich erhalte einen Zeilenende-Fehler unter Windows
Das liegt an den Zeilenenden.
Windows:
LINES TERMINATED BY '\r\n'
Linux / Mac:
LINES TERMINATED BY '\n'
Q7. Ich erhalte einen secure_file_priv-Fehler
Prüfen:
SHOW VARIABLES LIKE 'secure_file_priv';
Lösung:
- Lege die CSV in das erlaubte Verzeichnis
- Oder verwende
LOCAL
✔ FAQ‑Zusammenfassung
- Spaltenzuordnung →
@dummy - NULL‑Umwandlung →
NULLIF - Kopfzeile überspringen →
IGNORE 1 LINES - Hochgeschwindigkeits‑Import →
LOAD DATA - Häufige „Steck“-Punkte →
local_infile/secure_file_priv/ Kodierung
10. Zusammenfassung
MySQL-Importe können zunächst komplex wirken, aber wenn sie nach Ziel strukturiert sind, sind sie sehr einfach.
Lassen Sie uns die kürzesten Erfolgswege zusammenfassen.
✔ Wiederherstellung einer SQL‑Datei (.sql)
Schnellste und stabilste:
mysql -u user -p dbname < backup.sql
- Prüfen, ob die Datenbank existiert
- Berechtigungen prüfen
- Empfohlen wird
utf8mb4für die Kodierung
✔ CSV importieren (schnell)
Grundform:
LOAD DATA LOCAL INFILE '/path/to/file.csv'
INTO TABLE table_name
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
Wichtige Punkte:
- Windows‑Zeilenenden →
\r\n - Leere Zeichenketten →
NULLIF() - Bei Fehlern
local_infileprüfen
✔ Reihenfolge der Fehlersuche
- Kodierung (empfohlen utf8mb4)
SHOW VARIABLES LIKE 'local_infile';SHOW VARIABLES LIKE 'secure_file_priv';- Berechtigungen (SHOW GRANTS)
- Zeilenenden
In dieser Reihenfolge können Sie die meisten Probleme lösen.
✔ Goldene Regeln für große Datensätze
- CLI verwenden
- Importe aufteilen
- Durch eine Staging‑Tabelle gehen
- Temporär Fremdschlüssel/Einschränkungen deaktivieren
- Protokolle prüfen
✔ Endgültiges Fazit
- Backup‑Wiederherstellung → mysql‑Befehl
- Hochgeschwindigkeits‑CSV‑Import → LOAD DATA LOCAL INFILE
- Kleine einmalige Aufgaben → GUI
Wenn Sie unsicher sind, ist die Verwendung der CLI die stabilste Wahl.
Damit haben Sie nun ein vollständiges Wissen über MySQL‑Importe.
Probieren Sie es in Ihrer Umgebung aus und bauen Sie einen stabilen Betriebsablauf auf.


