PHPMyAdmin / MySql - Добавить поле идентификатора и автоматически заполнять идентификаторы - PullRequest
8 голосов
/ 09 сентября 2011

У меня очень большая таблица базы данных - около 20 миллионов записей.

Записи не имеют уникального идентификационного номера.Итак, я вставил новое поле.

Теперь я хотел бы заполнить его идентификационными номерами, увеличивая их на 1, начиная с первого идентификационного номера, равного 10 000 001.Я использую WAMP на локальной машине, и я набрал все свои максимальные значения до 5000 секунд и набрал несколько других переменных в php.ini и mysql.ini, чтобы выполнить загрузку в первую очередь (на это ушло более 10 часов!!).

В прошлом или с другими БД я мог экспортировать данные в excel, а затем набрать некоторый текст, чтобы вставить его обратно в phpmyadmin для ОБНОВЛЕНИЯ записей.Это нормально при работе с записями 5K или даже 100K, но с 20 миллионами записей это кажется неуправляемым.

Заранее спасибо !!

Ответы [ 3 ]

16 голосов
/ 09 сентября 2011

Просто запустите эти два запроса один за другим на вкладке SQL:

ALTER TABLE mytable AUTO_INCREMENT=10000001;

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

Затем MySQL создаст поле id и заполнит его последовательно, начиная с 10000001.

0 голосов
/ 09 сентября 2011

Все, что вам нужно сделать, это установить для столбца значение AUTO_INCREMENT, и mysql будет нумеровать строки для вас.Допустим, вы хотите, чтобы ваш новый столбец назывался «id».

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

Вы можете выполнить эти команды на панели sql phpMyAdmin - просто пропустите точку с запятой в конце.

0 голосов
/ 09 сентября 2011

Это работает в SQL Server, возможно, вы можете адаптировать его к MySQL:

declare @value int 
set @value=10000000

update your_table
set @value+=1,id=@value

Он обновит все ваши строки идентификаторов, начиная с 10000001, увеличиваясь на 1.

Надеюсь, впо крайней мере, дает вам некоторые идеи.

...