XML > databáze
6 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
Zdravím, mám asi 1000 položek zboží v .xml a potřebuji to vložit do databáze. Není problém udělat hromadný insert, ale já nechci vkládat takové zboží, které už v databázi, ale chci ho upravit. Máte někdo nápad, jak jedním selectem zjistit zboží, které již existuje, do nějakého pole? Na základě toho by se dal už vytvořit jeden insert a jeden update. Nebo máte jiný nápad? Díky moc
-
V SQL existuje příkaz REPLACE. Pokud jsem to dobře pochopil, mohl by řešit tvůj dotaz ;)
-
No, ale má to jednu vadu. Některé řádky si doupravím ručně, pak přijde další vlna nových údajů a replace udělá to, že přepíše i takové sloupce, které nechci. I když mě napadá, kdybych mnou "upravené" údaje vložil do jiné stejně strukturované tabulky a výsledek by hledal především data v duplicitní tabulce, pak až v té primární, řešilo by to můj problém. Zkusím to tak a díky ;)
-
Jedna varianta je taková, že by se vytvořil další sloupec, který bude obsahovat unikátní hodnotu získanou z hodnot položky. Tomuto sloupci se nastaví unikátnost. Při insertu takovéto hodnoty dojde k chybě duplicity a záznam se nevloží. Této chyby se dá využít. Když se zavolá chyba duplicity, tak vím, že záznam existuje, a provedu update. Otázkou je, zda lze vytvořit unikátní hodnotu, která by byla odlišná od jiných položek. Jinak lze použít klasiku. SELECT: existuje: UPDATE neexistuje: INSERT Ze zkušenosti vím, že je dobré použit raději jeden SELECT na jednu položku než jeden SELECT na všechny položky. Dost záleží i na struktuře tabulky i počtu položek.
-
Tak mě napadlo. Výše uvedený příklad by měl být ekvivalentem http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html. Ale ještě jsem to nezkoušel.
-
Tomik: ad 1) klasiku použít nelze, protože potom bych na stránce měl díky cyklu třeba i 1000 dotazů, což je nežádoucí... ad 2) to by mohlo fungovat, zkusím a díky