MYSQL случайно сгенерированный идентификатор и загрузка данных локальный INFILE - PullRequest
2 голосов
/ 24 апреля 2011

Есть ли способ использовать LOAD DATA LOCAL INFILE и создать случайный сгенерированный идентификатор вместо использования функции автоматического увеличения?

Я пытался использовать UUID () MySQL, но он выдает только один и тот же идентификатор для каждой строки

$sql = "LOAD DATA LOCAL INFILE \"" . $data['full_path'] . "\" REPLACE INTO TABLE as  " . 'FIELDS TERMINATED BY "\\n"' . 'LINES TERMINATED BY "\\r" IGNORE 1 LINES (contact_id, company) SET contact_id=UUID()';

Cheers

Ответы [ 2 ]

1 голос
/ 25 апреля 2011

Посмотрите пользовательскую документацию и пользовательские переменные.Я думаю, вы можете заставить его работать с ними: http://dev.mysql.com/doc/refman/5.5/en/load-data.html

Вы уверены, что UUID() не вносит что-то свое в каждый ряд?Я только что попробовал, и, кажется, работает нормально.Это только первая группа символов, которая, кажется, меняется каждый раз.

0 голосов
/ 25 апреля 2011

Сгенерировать случайное число просто.

select floor(1 + (rand() * 5))

Например, этот выбор генерирует число от 1 до 5, которое, в вашем случае, становится

set contact_id = floor(1 + (rand() * 5))

Донне знаю, нужен ли вам уникальный идентификатор для каждой строки.В этом случае я не знаю, используя load data, как создавать уникальные идентификаторы.

В качестве альтернативы вы можете сделать запрос на обновление в секунду

set @i := 0;
update table set contact_id = (@i := @i + 1) order by rand()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...