Autor Zpráva
Martin82
Profil *
Importuji pres php csv soubor do databaze (potreba nejakych uprav a propisovani do ruznych dalsich objektu v db => ne primy import do jedne tabulky).
Vsechno bylo behem testu ok, ale ted jsem narazil na problem - zrejme je problem v tom, ze pri exportu xls soubru na csv se extremne dlouhe zaznamy (napriklad nekolik vet) nedostane na jeden radek (nechapu - existuje nejake omezeni delky pro csv????) a zapise se zbytek zaznamu na dalsi radek...
Jednotlive zaznamy si beru z radku do pole a pak ruzne transformuji. Tim ze se mi rozdeli radek, dostavam se do problemu a muj kod nefunguje tak jak by mel:
  $fd = fopen ($filename, 'r');
  $info=FGetS($fd,4096); 
  $legenda=FGetS($fd,4096);
  while (!feof ($fd)) {
   $data=FGetS($fd,4096);
   $data=iconv('windows-1250','ISO-8859-2',$data);
   $radek=explode(";",$data);


Nenadapa vas, jak si poradit - at uz na urovni exportu xls do csv ci na urovni samotneho skriptu???
TomášK
Profil
Jako první zjisti, kde je problém. Pokud neproběhne správně export a ty data v csv souboru nejsou,
tak s tím na úrovni skriptu neuděláš vůbec nic i kdyby ses rozkrájel. Pokud v tom csv jsou data
správně (a já si myslím, že ano, omezení na délku řádku v csv není), pak je problém ve skriptu.
Jeslti dobře vidím, tak načteš několik řádků naráz a uděláš z toho jeden.

Druhá věc - MySQL má nástroj na import dat z csv - LOAD DATA INFILE. Jeho použitím se vyhneš
podobným problémům. Zvaž, jestli nestojí za to řešit to až v SQL. Třeba i tak, že si vytvoříš
tabulku, do které do naimportuješ a pak pomocí selectu převedeš data do jiných tabulek. Jaké to má
výhody?
* rychlejší - zajímavé řekl bych od desítek-až stovek tisíc záznamů výš.
* kontrolu formátu dat udělá za tebe
* kódu bude pravděpodobně potřeba daleko míň
AM_
Profil
a jak víš, že je kód v CSV rozdělen právě po 4KB? není lepší načíst celý soubor přes file_get_contents? navíc si zjevně poslal nekompletní kód, while končí v půlce... pokud je soubor moc velký a nepůjde načíst najednou, budeš na to muset jít nějak chytřeji, a ne po 4KB a říkat si, že to odpovídá parsovatelnému úseku (ten záznam, který přečnívá ty 4KB, se ti takhle zákonitě rozdělí).
ewe
Profil *
co kdybys poslal kompletni skript

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0