Autor Zpráva
P David
Profil *
Ahoj, mám dotaz. Představte si že máte xml feed od dodavatele eshopu kde je nazev, cena atd, dostupnost, unikatni identifikator atd.
Tento feed chceme importovat do dtb. položky(zboží) ve feedu můžou přibýt, změnit se nebo se smazat. A tohle je potřeba zohlednit i v naší dtb.
Přidání je jednoduche - Insert.
Změna - update.

Tady mi přijde nejlepší nakombinovat insert a update takže jsem udelal unikatni index a používám INSERT INTO ... ON DUPLICATE KEY UPDATE..

To je všechno celkem jasné a efektivni (používám multiinserty a vykon je pecka).

Ovšem jak ošetřit situaci že zboží bylo ve feedu = už ho máme v dtb, ale bylo smazany = my ho chceme taky smazat z dtb?

Používám řešení, že v dtb mám sloupec "pouzito", kterýmu při insertu a updatu nastavim 1. Po konci importovaciho scriptu smáznu zaznamy kde "pouzito" je 0 (nebyly importovany ani updatovany = nejsou ve feedu) a nakonec všem zaznamum nastavim "pouzito" na 0.

Vše funguje jak má, ale zajímá mě, jestli není nějaké jiné řešení, které mě nenapadlo. Tohle mi přijde takové humpolácké trochu.

Díky za info!
tiso
Profil
Ďalšia z možností je pred importom všetky položky v DB zmazať.
P David
Profil *
Ano to je mě také napadlo ale přijde mi to dost nebezpečné a neprakticke.
japlavaren
Profil
osobne si v php ukladam do pola id pouzitych (tj. insert update) riadkov a na konci zavolam
DELETE ... WHERE id NOT IN(...)
P David
Profil *
Taky zajímavá možnost ta me nenapadla

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: