ugrás a tartalomhoz

MYSQL táblában minden adatsor azonosítójának növelése

killroy · 2008. Már. 25. (K), 12.04
Sziasztok!

Szeretnék egy termékek táblát átvinni egyik adatbázisból, a másik adatbázisba. Majd a másik adatábzisban ahova átvittem a táblát beolvasztani egy ott lévő termékek táblába.

Az oszlopok stimmelnek, mert ugye anélkül nem működne a dolog. Egyetlen probléma, hogy ID egyezések lennének.
Arra gondoltam, hogy esetleg ideiglenesen megszüntetni a PRIMARY KEY tulajdonságát az ID-nak és generáltatni új ID-kat abba a táblába egy ciklus segítségével.

Teszem azt a táblában ahova beakarom ovasztani az újat a Termékek ID-ja 350-ig megy. És csinálni egy olyan ciklust ami az importálandó táblában átnevezi az ID-ket 351-től és minden további rekordnak ad egy egyel nagyobb ID-t egészen addig ahány rekord van abban a táblában.

Remélem érthetően leírtam a problémámat, vagy ha esetleg van valakinek egy kézzelfekvőbb megoldása azokat is szivesen fogadom.

Válaszaitokat előre is köszönöm!
 
1

Különbséggel növeld az ID-ket

Török Gábor · 2008. Már. 25. (K), 12.20
A céltábla legnagyobb ID-je (pl. 350) és a forrástábla legelső ID-je (pl. 1) különbségét kell hozzá a forrástábla ID-k értékéhez.

UPDATE forrástábla SET ID = ID + 350
2

Auto increment

janoszen · 2008. Már. 25. (K), 12.41
Arra figyelj, hogy a MySQLnek nem mindegy, milyen sorrendben frissíti a mezőket (order by updatenél) illetve a céltábla auto_increment-jét állítsd be az import után.
3

sikerült

killroy · 2008. Már. 25. (K), 13.26
Királyul bevált ez a módszer! Köszi a segítséget!

Még egy problémám van ami miatt nem tudom egymásba ágyazni rendesen a táblát.

A két táblában az oszlopok sorrendje nem egyezik balról jobbra és ezért nem a megfelelő helyre kerülnek az adatok. Tudok esetleg valahogy változtatni az oszlopok sorrendjén?
4

alter table

janoszen · 2008. Már. 25. (K), 18.19
alter table parancs a barátod :)
5

ha jól értettem a kérdést...

eszkimoka · 2008. Már. 25. (K), 22.11
Egy tábla tartalmát kellene egy másik táblába beletenni:

forrás: tabla1 (id, oszlop3, oszlop1, oszlop2)
cél: tabla2 (id, oszlop1, oszlop2, oszlop3)
(ahol az azonos nevő oszlopok jelentik a párokat)

Ha a céltáblán van auto_increment, akkor oszlopcserélgetve:
INSERT INTO tabla2 (oszlop1, oszlop2, oszlop3) SELECT oszlop1, oszlop2, oszlop3 FROM tabla1;

Ha a céltáblán nincs auto_increment: (maxid helyére a tabla2 jelenlegi legnagyobb id-ja kerül)
INSERT INTO tabla2 (id, oszlop1, oszlop2, oszlop3) SELECT id+maxid, oszlop1, oszlop2, oszlop3 FROM tabla1;

http://dev.mysql.com/doc/refman/5.0/en/insert.html