Der folgende Editor zeigt Ihnen ein Beispiel für das Einlesen einer großen CSV-Datei in die Datenbank mit PHP. Der Herausgeber findet es ziemlich gut, deshalb werde ich es jetzt mit Ihnen teilen und es allen als Referenz geben. Folgen wir dem Editor und werfen wir einen Blick darauf
Wie liest PHP große CSV-Dateien und importiert sie in die Datenbank?
Bei CSV-Dateien mit Millionen von Datenelementen kann die Dateigröße Hunderte von MB erreichen. Wenn sie einfach gelesen wird, kommt es wahrscheinlich zu einer Zeitüberschreitung oder einem Einfrieren.
Um die Daten in der CSV-Datei erfolgreich in die Datenbank zu importieren, ist eine Stapelverarbeitung unbedingt erforderlich.
Die folgende Funktion liest bestimmte in der CSV-Datei angegebene Datenzeilen:
/** * csv_get_lines 读取CSV文件中的某几行数据 * @param $csvfile csv文件路径 * @param $lines 读取行数 * @param $offset 起始行数 * @return array * */ function csv_get_lines($csvfile, $lines, $offset = 0) { if(!$fp = fopen($csvfile, 'r')) { return false; } $i = $j = 0; while (false !== ($line = fgets($fp))) { if($i++ < $offset) { continue; } break; } $data = array(); while(($j++ < $lines) && !feof($fp)) { $data[] = fgetcsv($fp); } fclose($fp); return $data; }
Aufrufmethode:
$data = csv_get_lines('path/bigfile.csv', 10, 2000000); print_r($data);
Die Funktion verwendet hauptsächlich die Idee der Zeilenpositionierung, indem die Startzeilennummer übersprungen wird Positionierung des Dateizeigers.
Auf die Art und Weise, wie die Daten in der Datenbank gespeichert werden, wird in diesem Artikel nicht näher eingegangen.
Die obige Funktion wurde an Dateien innerhalb von 500 MB getestet und läuft reibungslos. Sie wurde nicht an größeren Dateien getestet. Bitte erwägen Sie die Verwendung oder Verbesserung.
Das obige ist der detaillierte Inhalt vonSo lesen Sie eine große CSV-Datei in PHP und importieren sie in das Datenbankbeispiel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!