Ich verwende PHP, um Daten aus einer CSV-Datei mit fgetcsv() zu importieren, die ein Array für jede Zeile ergibt. Am Anfang hatte ich die Zeichenbegrenzung Satz bei 1024, etwa so:Stellen Sie sicher, dass fgetcsv() die gesamte Zeile liest
while ($data = fgetcsv($fp, 1024)) {
// do stuff with the row
}
jedoch einer CSV mit mehr als 200 Spalten, die 1024-Grenze für viele Zeilen übertroffen. Dies führte dazu, dass die Zeilenlesung in der Mitte einer Zeile angehalten wurde, und dann begann der nächste Aufruf von fgetcsv() an der Stelle, an der die vorherige unterbrochen war, usw., bis ein EOL erreicht wurde.
Ich habe seit diesem Limit auf 4096 erhöht, das sollte die Mehrheit der Fälle kümmern, aber ich würde gerne einchecken, um sicherzustellen, dass die gesamte Zeile gelesen wurde, nachdem jede Zeile abgerufen wurde. Wie gehe ich vor?
Ich überlegte, das Ende des letzten Elements des Arrays nach Zeilenenden (\ n, \ r, \ r \ n) zu überprüfen, aber diese würden nicht vom Aufruf fgetcsv() analysiert ?
Auch ich merke, dass ich programmatisch die längste Zeile in der Datei ermitteln konnte, aber das könnte eine Menge Aufwand für wirklich große CSV-Dateien sein. Möchte herausfinden, wie sichergestellt werden kann, dass jede Zeile in ihrer Gesamtheit im laufenden Betrieb gelesen wird. –