14. Apr 2008

Große CSV Dateien mit PHP verarbeiten

Gerade hatte ich bei der Verarbeitung einer großen CSV Dateien mit Speicherproblemen zu kämpfen. Mit Hilfe der fgetcsv() Funktion ließen sich diese Probleme umgehen: Ähnlich wie ein XML SAX Parser lassen sich mitfgetcsv() CSV Dateien Zeile für Zeile, Feld für Fled elegant einlesen. Kein explode() und dergleichen erforderlich. Beispiel:

$handle = fopen($_FILES['import_file']['tmp_name'], "r");
if ($handle)
{
set_time_limit(0);

//the top line is the field names
$fields = fgetcsv($handle, 4096, ',');

//loop through one row at a time
while (($buffer = fgetcsv($handle, 4096, ',')) !== FALSE)
{
if ($buffer[0] != null & strlen(trim($buffer[0]))>0)
{
// hier Zeilen verarbeiten
}

}
}

fclose($handle);

Leave a Reply

You must be logged in to post a comment.