Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] dzielenie dużego pliku csv
Forum PHP.pl > Forum > Przedszkole
neurogen
mam w pliku csv 50.000 wierszy. szukam sposobu na podzielenie tego 1 pliku na szereg plików np. po 1000 linii. ktoś zna odpowiednie narzędzie lub kod?
neurogen
pod podanym linkiem są jedynie komendy unixowe.
znalazłem CSV splitter natomiast do tego muszę mieć plik gdzie kolumny są oddzielone przecinkami. ja mam w tekście dużo przecinków więc to odpada. mój plik ma kolumny oddzielone znakiem @. czy jest takie rozwiązanie w php?
LowiczakPL
to może LimitIterator
Pyton_000
A jaki to problem? bierzesz odpalasz plik `fopen`, zczytujesz 1-szy wiersz jako headery `fgetcsv` a potem w pętli robisz `fputcsv` najpierw z headerami a potem XXX linijek danych. Co XXX zamykasz plik i robisz sobie nowy.

TO nie jest skomplikowane.
LowiczakPL
Ale po co dzielić plik jak można tak jak napisałem użyć iteratora

  1.  
  2. $csv = new SplFileObject('plik.csv');
  3. $csv->setFlags(SplFileObject::READ_CSV);
  4.  
  5. foreach(new LimitIterator($csv, 0, 1000) as $linia){
  6. // linia do zapisu
  7. }
  8.  


to przykład z podziałem na paczki dla zapisu po 1000

  1.  
  2. $csv = new SplFileObject('plik.csv');
  3. $csv->setFlags(SplFileObject::READ_CSV);
  4.  
  5. $start = 0;
  6. $paczka = 1000;
  7. while (!$csv->eof()) {
  8. foreach(new LimitIterator($csv, $start, $paczka) as $linia){
  9. // linia do zapisu
  10. }
  11. $start += $paczka;
  12. }
  13.  
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.