adatok átvitele két rendszer között

Fórumok

Olyat kéne csinálnom, hogy két ~2000 táblás rendszer között adatokat átvinni. a probléma csak annyi, hogy az egyik rendszeren is van szoftver ami masszírozza az adatokat és a másikon is, szóval az FK-k és az indexek nem biztos, hogy ugyanazok lesznek. A rendszerek egyedileg konzisztensek.
Jön az user és azt mondja, hogy ezt a 2 tábla adatait szeretném átvinni A-ból B-be.
A 2 tábla mondjuk user és user_address, egy usernek lehet több címe is.

Mit csinálnátok?

Algoritmust keresek. "A" rendszerből kicsomagolom FK és index helyesen bizonyos táblák adatait, "B" rendszerbe meg beimportálom FK és index helyesen.
Algoritmust keresek, merre induljak el?

Hozzászólások

Programot ;)
Ez azért nem ilyen egyszerű. Nem elég, hogy a két rendszer önmagában konzisztens, de valószínűleg más-más elírások vannak rendszerenként.
Ezt úgy hívják adattisztítás.
- meg kell állapítani az egyezéseket -> kidobni
- a hasonlóságokat -> javítani
- eltéréseket -> javítani, hozzáadni

A javítások egy része automatizálható, a többi kézimunka.

Az a kérdés, hogy hány adatról van szó, és melyen a minőség, szótározottság.

Szóval. Egyszerűsítsük a feladatot. Nincs szoftver, csak 2 db. Ugyanaz a db séma. vannak tetszőlegesen kijelölt részhalmazai, adattáblák. Feladat: Át kell vinni a részhalmazok adatait a másik rendszerbe úgy, hogy a kiindulási adatok egymáshoz való viszonya megmaradjon. Algoritmust, eljárást keresek. Adatot nem kell tisztítani.

--
Ami elől menekülsz, az után szaladsz.

Akkor semmi probléma.
A művelet nem más, mint kirakni az adatokat, összefüggésekkel együtt. Az index nem réze az adatnak. Az összefüggés a nyitó példában: az ember <- és a hozzá tartozó címek listája.
Ha ez kész, akkor a másik db-be: berak ember -> kijön id. Berak címek ugyanahhoz az id-hez.

Ennyi az algoritmus, ha két adathalmaz diszjunkt és az adatszerkezete megegyezik.

Látatlanban, rengeteg lehetőség van. Tehát először meg kell alaposan nézni, hogy működnek a rendszerek.

Update:

Tévedtem, először az eredeti problémát kell megismerni/megérteni. És csak utána foglalkozni a rendszerekkel.

Az "ezt a 2 tábla adatait szeretném átvinni A-ból B-be" probléma most jelenthet egyszeri feladatot, de később akár "real-time" szinkronizálássá is válhat. Jó tudni, hogy a jövőben mire lehet számítani.

Ha csak szigorúan az adatmozgatásra koncentrálunk, akkor is is felvetődik az algoritmust alapjaiban meghatározó kérdés: a kulcsmezők auto vagy kódból generáltak.

Azt megmondja, de azt nem mondja meg, hogy az adott rekordban a kulcsot képező mezők ÉRTÉKE micsoda.

Ha ezek része, vagy egésze autogenerált érték, akkor ezzel kell számolnod, ha kódból generált, akkor azt kell leutánoznod.

Ideális és valószínűtlen esetben a forrásdb kulcsadatait is ütközés nélkül beszúrhatod a céldb-be, még ideálisabb és valószínűtlenebb esetben úgy, hogy a céldb-be ezután bekerülő rekordok kulcsképzését sem fogja ez háborgatni.

Nem véletlen, hogy az ilyen összefűzés a legutáltabb meló ebben a bizniszben.

A probléma ott van, hogy ha nem csak egyszer kell átvinni adatot A-ból B-be, akkor honnan fogod tudni mit vittél át és mit nem. Mi garantálja, hogy nem viszed fel kétszer ugyanazt a usert B-ben, csak azért mert megváltozott a A-ban. Itt két lehetőséged van. A két adatbázis között csinálsz egy PK mapping táblát ami leírja, hogy melyik adatbázisban mi a kulcs és melyik A-beli PK melyik B-beli PK-hoz tartozik. Másik lehetőség, hogy bizonyos adatmezők alapján kitalálod, hogy a két rekord azonos pl. szül. név, dátum,anyja neve.