[ bjevta @ 30.01.2013. 15:46 ] @
treba da se exportuje par tabela koje su vezane 1-N: USER_PROFILE (1-N) LANGUAGE_DIRECTION

LANGUAGE_DIRECTION ima USER_PROFILE_ID. To kao user zna neke jezike, itd. Stotinak slogova u USER_PROFILE, nekoliko stotina u LANGUAGE_DIRECTION.

E, sad, pitanje je kako da exportujem iz source baze i mergujem na drugoj bazi?

Sta ce da se desi sa autoincrement poljima (USER_PROFILE_ID)? Ako, na primer, exportujem usera: "200, Pera Peric, Kragujevac", taj USER_PROFILE_ID (200) ce da dobije neku drugu vrednost, na primer 505. Medjutim, LANGUAGE_DIRECTION koje sam izvezao za Peru ima USER_PROFILE_ID=200. Import alat/proces treba da bude takav da se automatski azurira foreign key 200=>505

je l ima resenja pomocu mysql alata?

ja sto mogu jeste da napisem par linija koda da ucitam sve u XmlDocument pa onda polako da radim insert. nije problem al' pitam ako moze na gotovo...
[ Shinhan @ 31.01.2013. 13:04 ] @
Citat:
taj USER_PROFILE_ID (200) ce da dobije neku drugu vrednost, na primer 505


Zašto to misliš?
Ako exportuješ i ID, nema razloga da pri import ne bude isti ID.

Naravno, ovo govorim samo za MySQL nisam upoznat sa ostalim bazama.
[ bjevta @ 31.01.2013. 15:08 ] @
shinhane, thx for odgovoru.

ID-jevi ne smeju da se preklope.

kako bilo, danas sam dobio info da mi je data source nedostupan te jedino sto imam je CSV. nema druge, moracu da zaposlim prste da kuckaju.
[ bogdan.kecman @ 31.01.2013. 22:09 ] @
pazi ovako, kada ti imas auto_increment to je za import/export nebitno zato sto ti kad radis export on ce ta auto_inc polja da exportuje sa pravim vrednostima. bitno je da setujes odgovarajuci auto_increment broj na kraj kada zavrsis insert a to ti mysqldump radi sam ako ga koristis. auto_inc ce da ti generise brojku samo pod uslovom da saljes null kao vrednost, ako saljes vrednost auto_inc ce da se ne koristi i ucice u tabelu ta vrednost koju si slao
[ bjevta @ 31.01.2013. 22:55 ] @
bogi, fala. šta bi na kraju, je l može da se izveze i uveze master-detail?

ja nisam više tražio pošto mi za ovaj slučaj nije upotrebljivo. al, kad smo načeli temu, da imamo i zaključak.
[ bogdan.kecman @ 01.02.2013. 07:05 ] @
ako uradis damp on ce ti za sve auto_inc vrednosti staviti vrednost a ne null tako da ce se te sve vrednosti prebaciti na novi server kako valja
dodatno ce ti u strukturu tabele upisati auto_increment vrednost od koje da nastavi dalje

dakle - naravno da moze da se export-import master-detail tabela ako radis sa mysqldump ili bilo kojim regularnim backup/restore sistemom za mysql

ako ides mysql->csv->mysql onda mozes da imas problema da ti autoincrement ne bude validan za sledeci insert (radice ti ok svi podaci) a i to samo ako koristis myisam, ako koristis innodb ni tu nemas problem posto innodb sledeci po redu auto_inc racuna "pametnije", samo posle importa restartuj mysql server (opet to vazi za kada ides kroz csv, kada ides kroz dump nepotreban je restart)
[ bjevta @ 01.02.2013. 09:04 ] @
"ako ides mysql->csv->mysql onda mozes da imas problema da ti autoincrement ne bude validan za sledeci insert ... "

svakako. ovde to i jeste problem, kao i moje, moze biti, neprecizno izrazavanje. slucaj koji imam nije prost export-imprort vec pre export->append. autoinc polja u master/child tabelama treba i mora da dobiju druge vrednosti da ne bi prepisala postojece a u child tabeli jos treba da se konstatuje da je ID mastera promenjen i da sad FK treba da ima taj novi ID.

primer:
ako je pera imao ID=10 u originalnoj bazi, njegov child row (jezik, na primer) ce imati FK PERSON_ID=10
ali, kad se importuje, pera dobije ID=1010 pa i child row mora da ima FK PERSON_ID=1010 a ne 10, kao sto je bilo u originalnoj tabeli.
[ Shinhan @ 01.02.2013. 09:31 ] @
Auuuuuu, to ti je mnogo komplikovano. Praktično imaš dva mastera.
Pretpostavljam da ovo ne moraš samo jednom da radiš?

Nema tu dobrog rešenja :/
[ bjevta @ 01.02.2013. 09:59 ] @
pa, bre, i nije toliko komplikovano ako se izveze u XML i to pravilno strukturian (element based, ne sa atributima).

treba samo jednom da se radi, za sad. ;)
[ bogdan.kecman @ 02.02.2013. 15:27 ] @
nije to nista komplikovano ali to ne mozes da uradis automatski, moras da napises skirpt koji ce to da radi