Autor | Zpráva | ||
---|---|---|---|
Martin82 Profil * |
#1 · Zasláno: 11. 6. 2009, 21:41:22
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 |
#2 · Zasláno: 11. 6. 2009, 22:07:15
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 |
#3 · Zasláno: 11. 6. 2009, 22:21:42
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í).
|
||
Časová prodleva: 13 dní
|
|||
ewe Profil * |
#4 · Zasláno: 25. 6. 2009, 06:24:23
co kdybys poslal kompletni skript
|
||
Časová prodleva: 15 let
|
0