Подтвердить что ты не робот

Bulk insert mysql - могу ли я использовать предложение ignore? есть ли ограничение на нет. записей для массовой вставки?

У меня есть куча данных, которые я хочу вставить, и я решил использовать массивную вставку для mysql.

вставить в значения друзей (requestor, buddy) (value1, value2), (value2, value1), (value3, value4), (value4, value3),...

Мне хотелось бы знать следующее:

1) могу ли я игнорировать? например,

Вставить игнорировать значения друзей (requestor, buddy) (значение1, значение2), (значение2, значение1), (значение3, значение4), (значение4, значение3),...

что произойдет, если у меня есть дубликат? будет ли он а) не вставлять все? б) вставить записи перед дублированной записью и STOP обрабатывать данные после этого? c) игнорировать дубликат и продолжать с остальными?

2) существует ли ограничение на no. записей, которые я могу использовать для объемной вставки, как это?

Спасибо.

4b9b3361

Ответ 1

Да, вы можете использовать ключевое слово "ignore", и оно просто игнорирует повторяющиеся ошибки. Он будет вставлять каждую строку, которую он может, пропуская те, которые приведут к дублированию (и это не остановит обработку данных.) Если вы сделаете что-то вроде этого (где мы предполагаем, что первый столбец является первичным ключом):

вставить игнорировать на значения c (1,1), (2,2), (3,3), (3,5), (4,5);

Тогда это означает, что (3,3) будет вставлено и (3,5) не будет. Все, кроме (3,5), будут вставлены (при условии, что новая таблица.)

Вероятно, нет жесткого ограничения, но вы можете провести тестирование, чтобы увидеть, где вы должны нарисовать линию, исходя из ваших потребностей.

Изменить: похоже, что MySQL имеет настраиваемый предел размера SQL-запросов, причем по умолчанию используется 1 МБ. Дополнительная информация: http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_query_cache_limit.

Ответ 2

Существует также предел в 50 000 строк, который может иметь запрос INSERT.