Как мне вставить большое количество строк в MySQL? - PullRequest
8 голосов
/ 21 мая 2009

Как вставить, например, 100 000 строк в таблицу MySQL одним запросом?

Ответы [ 4 ]

8 голосов
/ 21 мая 2009
insert into $table values (1, a, b), (2, c, d), (3, e, f);

Это выполнит вставку из 3 строк. Продолжайте по мере необходимости, чтобы достичь 100 000. Таким образом, я выполняю блоки ~ 1000, когда выполняю работу ETL.

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

Также обратите внимание, что кто-то еще сказал о размере max_allowed_packet, ограничивающем длину вашего запроса.

3 голосов
/ 21 мая 2009

Вы можете выполнить пакетную вставку с помощью оператора INSERT, но ваш запрос не может быть больше (чуть меньше) max_allowed_packet.

Для строк по 100 тыс., В зависимости от размера строк, вы, вероятно, превысите это.

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

В качестве альтернативы вы можете использовать LOAD DATA INFILE (или LOAD DATA LOCAL INFILE) для загрузки из файла с разделителями табуляции (или с другим разделителем). Подробности смотрите в документации.

НАГРУЗКА ДАННЫХ не подпадает под ограничение max_allowed_packet.

0 голосов
/ 21 мая 2009

Попробуйте использовать LoadFile () или Преобразуйте данные в XML-файл, а затем используйте функцию Load and Extract () для загрузки данных в базу данных MySQL.

Это опция One Query and Fastest,

Даже я делаю то же самое, у меня были файлы, если 1,5 ГБ вокруг миллионов строк. Я использовал оба варианта в моем случае.

0 голосов
/ 21 мая 2009

Вы не можете, насколько я знаю. Вам понадобится петля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...