Zadejte hledaný výraz...
Jakub Glos
Webtrh.cz
Vývoj webových stránek na WordPressu a proklientský přístup pro freelancery
Třídenní infromacemi nabitý prezenční + online kurz v Praze od Webtrhu pouze za 2 871 Kč
Více informací

Sloučení dvou databázi – přečíslování ID napříč tabulkami

cc
verified
rating uzivatele
(11 hodnocení)
25. 1. 2014 05:38:13
Zdravím,
řeším ruční sql import z jednoho e-shopu do druhého. Vše mám podchyceno kromě ID v tabulkách. Teď se mi tam nějaké záznamy shodují, resp. většina.
Potřeboval bych nějaký sql update zápis, co mi přečísluje importované záznamy - ID od nějakého čísla dál napříč tabulkami. Tabulek je asi 5 a jsou tam zmíněné souvstažné ID.
Dal bych tam následující ID dle autoincrementu cílové databáze.
Klidně to udělám v několika krocích v mezidatabázi, postupně, jen mě teď nenapadá řešení.
Budu rád za nějaký zápis / nápad díky.
25. 1. 2014 05:38:13
https://webtrh.cz/diskuse/slouceni-dvou-databazi-precislovani-id-napric-tabulkami/#reply989595
Macecha
verified
rating uzivatele
(17 hodnocení)
25. 1. 2014 09:38:34
stačí odstranit/ nechat prázdný aktuální id u vkládaných dat/tabulek, nejlépe pomocí néjakého nahrazovacího scriptu nebo programu nebo rovnou v databazi, a autoincriment se o to postará ve stávající tabulce při vkládání nových dat
25. 1. 2014 09:38:34
https://webtrh.cz/diskuse/slouceni-dvou-databazi-precislovani-id-napric-tabulkami/#reply989594
qwertr
verified
rating uzivatele
(7 hodnocení)
25. 1. 2014 11:35:11
Toto moze platit v pripade, ak tie idcke nepouzive v cudzich klucoch na urziavanie referencnej integrity. V pripade ak ano, tak to tvoje riesenie by pekne rozhadzalo databazu.Nemusia byt vytvorene ani cudzie kluce, aby to rozhadzalo.
Napr. v cielovej databaze
Mam tovar ponozky s ID 1 a tam mam Id na kategoriu tovaru s 1. tabulka kategoria s ID 1 obsahuje kategoria ponozky.
v prenasanej databaze mam mam tovar kabat s ID 1 a tam mam ID na kategoria tovar s ID 1 a tabulka kategorii s ID 1 obsahuje kategoriu kabat.
Tvoje riesenie by sposobilo toto. Prenesiem kabat, ID kabatu by bola 2 a ID kategorie by ostalo 1. Prenesiem kategoriu kabat. Tato kategoria by dostala ID 2.
Vo vysledku by sme mali tovar ponozky s ID1 a kabat s ID2, obidva zaznami by odkazovali na kategoriu s ID1. Tabulka kategorie by obsahoval kategorie ponozky s ID 1 a kategiu kabat s ID 2. Takze obidva tovary by si mal zaradene do kategorie pónozky, co je nespravne.
Ja by som urobil toto v pripade ak pouzivas cudzie kluce. V databaze ktoru chcem prenasat by som zrusil vseky cudzie kluce. Na id zrusil autoinkrement a pripocital kazdemu ID offset napr 10 000. Takze zo zaznamu s ID 1 by sa ti stal zaznam s ID 10001. Takisto by som upravel zazami, ktore odkazovali na riadok s ID 1. Tam by odkazovali namiesto zaznamu 1 na zaznam 10001. Takze by si mal precislovane vsetky ID. V cielovej databaze by som zrusil autoincrement, presypal vsetky data z prenasanej databezy a znovu zapol autoincrement. Offset by som volil podla nejvecsieho ID v cielovej databaze. Malo by platit, ze offset + 1 je vecsie ako najvecsie ID v cielovej databaze.
25. 1. 2014 11:35:11
https://webtrh.cz/diskuse/slouceni-dvou-databazi-precislovani-id-napric-tabulkami/#reply989593
cc
verified
rating uzivatele
(11 hodnocení)
25. 1. 2014 14:18:15
Napsal qwertr;1048731
Ja by som urobil toto v pripade ak pouzivas cudzie kluce. V databaze ktoru chcem prenasat by som zrusil vseky cudzie kluce. Na id zrusil autoinkrement a pripocital kazdemu ID offset napr 10 000. Takze zo zaznamu s ID 1 by sa ti stal zaznam s ID 10001. Takisto by som upravel zazami, ktore odkazovali na riadok s ID 1. Tam by odkazovali namiesto zaznamu 1 na zaznam 10001. Takze by si mal precislovane vsetky ID. V cielovej databaze by som zrusil autoincrement, presypal vsetky data z prenasanej databezy a znovu zapol autoincrement. Offset by som volil podla nejvecsieho ID v cielovej databaze. Malo by platit, ze offset + 1 je vecsie ako najvecsie ID v cielovej databaze.
A to jsem si myslel, že slovensky umím, ještě si to pár krát přečtu, ale zatím jsem to nepochopil :(
25. 1. 2014 14:18:15
https://webtrh.cz/diskuse/slouceni-dvou-databazi-precislovani-id-napric-tabulkami/#reply989592
qwertr
verified
rating uzivatele
(7 hodnocení)
25. 1. 2014 15:05:14
Takze takto.
V cielovej databaze maz ID 1,2, 3. V starej databaze maz ID 1,2, 3. Potrebujes v starej databaze urobit ID = ID + 10. Stara databaza bude potom mat ID 11, 12, 13.
Potom mozes zlucit tie dve databazy a zaznamy budu mat ID 1,2,3 a 11,12, 13.
V jednej z tych dvoch databaz potrebujes precislovat ID tak, aby sa ti ID neopakovali.
Dufam, ze zatial jasne.
Cislo 10 som zvolil na zaklade toho, ze v cielovej mam maximalne ID 3.
Pokial by som mal napr maximalne id 55, tak by som namiesto 10 pripocitaval 100. Ak by som mal maximalne id napr 789 tak by som pripocitaval 1000 ak by bolo max. id 7562 tak by som pripocitaval 10000.
25. 1. 2014 15:05:14
https://webtrh.cz/diskuse/slouceni-dvou-databazi-precislovani-id-napric-tabulkami/#reply989591
cc
verified
rating uzivatele
(11 hodnocení)
25. 1. 2014 15:17:19
Jasně to chci. Uměl bys napsat ale SQL script, který vezme ID a přidá k němu třeba 10ku? Na druhou stranu by bylo "hezčí" kdyby tam byl ten offset např 2540 a importovanou db jsem uměl přečíslovat na 2541, 2542, 253, ... :)
I když přidat k nim nějaké číslo dává asi největší smysl, aby to šlo provést v souvstažných tabulkách, že?
25. 1. 2014 15:17:19
https://webtrh.cz/diskuse/slouceni-dvou-databazi-precislovani-id-napric-tabulkami/#reply989590
qwertr
verified
rating uzivatele
(7 hodnocení)
25. 1. 2014 16:15:20
Ano. Pridat nejake cislo je najednuksi sposob. Takto by to vyzeralo
posuniem id o 10 a upravene udaje v databaze
Na akom systeme ti bezi eshop ? Pre toho kto pozna ten system by nemal byt problem poposuvat ID -cka.
25. 1. 2014 16:15:20
https://webtrh.cz/diskuse/slouceni-dvou-databazi-precislovani-id-napric-tabulkami/#reply989589
cc
verified
rating uzivatele
(11 hodnocení)
25. 1. 2014 16:25:04
Provedl jsem ve všech tabulkách obdobu tohoto sql:
ale není to prostě ono, do budoucna by se mi strašně líbil script, třeba v PHP, který by zjistil v těch tabulkách nejvyšší ID a podle toho přečísloval ve všech tabulkách. Kdo mě nakopne ohledně zápisu pro zjištění posledního ID ve všech tabulkách?
Zkusil bych na to napsat admin plugin. Jedná se o Opencart.
25. 1. 2014 16:25:04
https://webtrh.cz/diskuse/slouceni-dvou-databazi-precislovani-id-napric-tabulkami/#reply989588
qwertr
verified
rating uzivatele
(7 hodnocení)
25. 1. 2014 16:47:11
Takze pre opencart by si mal mat okrem ineho aj taketo nieco
25. 1. 2014 16:47:11
https://webtrh.cz/diskuse/slouceni-dvou-databazi-precislovani-id-napric-tabulkami/#reply989587
cc
verified
rating uzivatele
(11 hodnocení)
25. 1. 2014 16:58:09
stock_status, manufacter_id mám na obou e-shopech stejné, to mám podchyceno, řeším teď pouze jen "product..."
25. 1. 2014 16:58:09
https://webtrh.cz/diskuse/slouceni-dvou-databazi-precislovani-id-napric-tabulkami/#reply989586
qwertr
verified
rating uzivatele
(7 hodnocení)
25. 1. 2014 17:11:39
Pre produkty potrebujes opravit este minimalne toto
este potrebujes upravit product_to_category, product_to_store
25. 1. 2014 17:11:39
https://webtrh.cz/diskuse/slouceni-dvou-databazi-precislovani-id-napric-tabulkami/#reply989585
cc
verified
rating uzivatele
(11 hodnocení)
25. 1. 2014 17:33:39
To všechno mám, ale jak píšu. Líbilo by se mi víc dávat "poslední id".
S takovouhle to opakovat a jsem na strašných číslech brzo.
25. 1. 2014 17:33:39
https://webtrh.cz/diskuse/slouceni-dvou-databazi-precislovani-id-napric-tabulkami/#reply989584
Jan Stejskal
verified
rating uzivatele
(7 hodnocení)
25. 1. 2014 17:46:55
Zjistí poslední hodnotu autoincrement, takže budete znát číslo, které k původním id přičítat, aby v nové db byla id kontinuální.
25. 1. 2014 17:46:55
https://webtrh.cz/diskuse/slouceni-dvou-databazi-precislovani-id-napric-tabulkami/#reply989583
qwertr
verified
rating uzivatele
(7 hodnocení)
25. 1. 2014 17:50:17
Strasne cisla je co ? Mam jednu aplikaciu, kde sa momentalne id -cka pohybuju okolo cisla 5 milionov. Pokial mi to cislo vlezie do int, to jest do cisla 2 147 483 647 tak to neriesim.
Pokial to potrebujes riesit opakovane, tak potom je fakt dobre napisat si aplikaciu.
Alebo dalsia moznost. V jednej aplikaciu sme nepouzivali ID ako autoincrement ale presli sme na GUID
Globally unique identifier - Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Globally_unique_identifier, takze spajanie dvoch databaz nie je ziaden problem.
25. 1. 2014 17:50:17
https://webtrh.cz/diskuse/slouceni-dvou-databazi-precislovani-id-napric-tabulkami/#reply989582
cc
verified
rating uzivatele
(11 hodnocení)
25. 1. 2014 17:56:09
Napsal Jan Stejskal;1048904
Zjistí poslední hodnotu autoincrement, takže budete znát číslo, které k původním id přičítat, aby v nové db byla id kontinuální.
Super, zkusím si s tím hrát a složit nějaký mega SQL update :)
Aktuálně vím tedy poslední ID, teď asi musím spočítat záznamy v mé importované databázi a dle toho rozhodit číla OD - DO, že? Případně to prohnat asi nějakým cyklem $id++ takže se to bez PHP neobejde.
25. 1. 2014 17:56:09
https://webtrh.cz/diskuse/slouceni-dvou-databazi-precislovani-id-napric-tabulkami/#reply989581
Pro odpověď se přihlašte.
Přihlásit