2011-09-08 24 views
7

Mam bardzo dużą tabelę bazy danych - prawie 20 milionów rekordów.PHPMyAdmin/MySql - Dodaj pole ID i automatycznie wypełniaj numery ID

Zapisy nie mają unikalnego numeru ID. Wprowadziłem nowe pole.

Teraz chciałbym wypełnić go numerami identyfikacyjnymi, zwiększając się o 1, zaczynając od pierwszego numeru ID będącego 10.000.001.

FYI - używam WAMP na komputerze lokalnym i wybrałem wszystkie moje maksymalne czasy do 5000 sekund i wybrałem kilka innych zmiennych w plikach php.ini i mysql.ini, aby przesłać w pierwszej kolejności (co zajęło ponad 10 godzin !!).

W przeszłości lub w innych bazach danych mogłem wyeksportować dane do programu Excel, a następnie pobić trochę tekstu, aby wkleić go z powrotem do phpmyadmin, aby zaktualizować rekordy. Jest to dobre w przypadku pracy z rekordami 5K, a nawet 100K, ale wydaje się to niemożliwe z 20 milionami rekordów.

Z góry dziękuję !!

Odpowiedz

16

Wystarczy uruchomić te dwa zapytania jedna po drugiej w zakładce SQL:

ALTER TABLE mytable AUTO_INCREMENT=10000001; 

ALTER TABLE mytable ADD `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; 

MySQL będzie następnie utworzyć pole id i wypełnić go kolejno zaczynając od 10000001.

+0

+1, pobij mnie do tego – Johan

+0

To właśnie dostaję za odebranie telefonu, D – gview

+0

Dzięki za szybką odpowiedź. – Kevin

0

To działa w SQL Server, może można dostosować go do MySQL:

declare @value int 
set @value=10000000 

update your_table 
set @value+=1,[email protected] 

To będzie zaktualizować wszystkie wiersze zaczynające się na ID 10000001 wzrasta o 1.

Mam nadzieję, że przynajmniej daje masz kilka pomysłów.

+0

Skomplikowany bez powodu, zadziała. – Johan

0

wszystko, co trzeba zrobić jest ustawiona kolumna na AUTO_INCREMENT i mysql będzie numerować wiersze dla ciebie. Powiedzmy, że chcesz, aby twoja nowa kolumna miała nazwę "id".

alter table yourtable auto_increment = 10000001; 
alter table yourtable add id int unsigned primary key auto_increment; 

Można wydawać te polecenia w panelu SQL phpMyAdmin - po prostu zostawić off średnik na końcu.

Powiązane problemy