Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann man CSV-Daten mit PHP effizient in MySQL importieren und häufige Probleme vermeiden?

Wie kann man CSV-Daten mit PHP effizient in MySQL importieren und häufige Probleme vermeiden?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-17 12:12:021000Durchsuche

How to Efficiently Import CSV Data into MySQL Using PHP and Avoid Common Issues?

CSV-Daten mit PHP und MySQL importieren

Problem und Fragen

Ein Benutzer hatte Probleme beim Importieren von CSV-Daten in eine MySQL-Datenbank und stellte Folgendes Fragen:

  1. Die importierten Textwerte werden in der Datenbank als „0“ angezeigt.
  2. Wie gehe ich mit in Anführungszeichen eingeschlossenen Daten um?
  3. Die ersten Zeilen werden ignoriert einer CSV-Datei mit Headern.
  4. Beibehaltung des Datenformats (Dezimalpunkt) beim Import in die Datenbank.
  5. Beim Import großer Datenmengen ist ein Fehler „Ausführungszeit überschritten“ aufgetreten.

Lösung

1. Textwerte, die als „0“ angezeigt werden:

Die Daten werden wahrscheinlich als Ganzzahlen statt als Zeichenfolgen in die Datenbank importiert. Stellen Sie sicher, dass die Datenbankspalten den richtigen Typ haben (z. B. TEXT oder VARCHAR).

2. Umgang mit zitierten Daten:

Verwenden Sie die OPTIONALLY ENCLOSED BY-Klausel in der LOAD DATA INFILE-Abfrage, um das Einschlusszeichen anzugeben (z. B. ").

3. Kopfzeilen ignorieren :

Fügen Sie eine LINES TERMINATED BY-Klausel in die Abfrage ein und geben Sie das Zeilentrennzeichen an (z. B. n). Ignorieren Sie dann manuell die gewünschte Anzahl der Anfangszeilen vor dem Import.

4. Beibehaltung des Datenformats:

Dezimalwerte bleiben in ihrem ursprünglichen Format in der Datenbank.

5 Fehler wegen Zeitüberschreitung:

Erhöhen Sie die Einstellung „max_execution_time“ in der PHP-Konfiguration (z. B. in php.ini), um längere Ausführungszeiten zu ermöglichen. Erwägen Sie bei großen Importen die Verwendung einer effizienteren Methode wie LOAD DATA INFILE von MySQL direkt.

Alternative Lösung

Anstatt PHP-Schleifen zum Importieren der Daten zu verwenden, kann MySQLs LOAD DATA INFILE CSV-Dateien mit einer einzigen SQL-Abfrage direkt in Tabellen importieren:

$query = <<<'eof'
LOAD DATA INFILE '$fileName'
INTO TABLE tableName
FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
(field1,field2,field3,etc)
eof;

$db->query($query);

Diese Methode ist schneller und effizienter als PHP-Parsing-Schleifen.

Das obige ist der detaillierte Inhalt vonWie kann man CSV-Daten mit PHP effizient in MySQL importieren und häufige Probleme vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn