Autor Zpráva
UrbiCZ
Profil
Čau. Jak řešíte vkládání několika tisíc řádků do DB? Vytvořil jsem si XML parser a chci rozparsovaná data vložit do DB. Je to několik tisíc záznamů, ale vloží se mi jich vždy jen několik set. Díky...

$xml = simplexml_load_file("filename.xml");
   
   foreach($xml->group as $id){
    $id_i = $id["id"];
    $kod = $id["kod"];
    $nadrizena = $id["nadrizena"];
   foreach($id->nazev as $nazev){
    $nazev_i = $nazev;
   }
   foreach($id->seo as $seo){
    $seo_i = $seo;
   }
   foreach($id->cool as $cool){
    $cool_i = $cool;
   }

   mysql_query("INSERT INTO kotel2(group_id, kod, nadrizena, nazev, seo, cool) VALUES($id_i,$kod,$nadrizena,'$nazev_i','$seo_i','$cool_i')");
   
   }
Tori
Profil
UrbiCZ:
Všechny dotazy proběhnou bez chyby? Pokud nepoužíváte escapování, tak vám např. selžou všechny inserty, kde některá hodnota obsahuje apostrof. Jinak šlo by to o něco zrychlit vícenásobnými inserty.


UrbiCZ:
Je to několik tisíc záznamů, ale vloží se mi jich vždy jen několik set.
A vlastně se ptáte na příčinu, nebo ji znáte? Mohl by to být např. nízký limit na dobu provádění skriptu (viz funkce set_time_limit).
UrbiCZ
Profil
Apostrofy ve vkládaných hodnotách nikde nejsou, takže escapování není potřeba. Co myslíte těmi vícenásobnými inserty? Nějaký příklad by nebyl?

Když vkládám do DB názvy s diakritikou, tak se do DB nevloží, pouze názvy bez diakritiky. Pokud ovšem změním kódování na UTF8, tak se vloží, ale se špatným zobrazením znamének s diakritikou. Když však poté provedu selekci dat do souboru, tak se zase zobrazí správně. :) Tohle vážně nechápu.
Tori
Profil
UrbiCZ:
Co myslíte těmi vícenásobnými inserty?
Více řádků jedním dotazem: INSERT INTO tabulka (col1, col2) VALUES (1,2), (3,4), (5,6) ..., postupně skládaným skriptem.

Pokud ovšem změním kódování na UTF8
Kde - před inserty použijete SET NAMES utf8, nebo někde jinde?

, tak se vloží, ale se špatným zobrazením znamének s diakritikou.
Kde se to špatně zobrazí?
UrbiCZ
Profil
Po provedení příkazu INSERT INTO se prostě špatně zobrazí diakritika jednotlivých záznamů v DB. SET NAMES utf8 jsem už zkoušel také, ale nepomohlo.
Tori
Profil
UrbiCZ:
XML soubor je uložený v utf8? Tenhle skript taky?
UrbiCZ
Profil
No soubor XML je ulozen v ISO 8859-2.
Kajman
Profil
Pokud to simplexml nepřevede, tak dejte
set names latin2

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: