Отправить заявку

MySQL: Insert больших данных

В новом проекте приходится очень часто импортировать большие объемы информации. Перебрали несколько совершенно разных подходов и хотим поделиться тем, который, на наш взгляд (для нас так точно) :) оказался самым эффективным из все. Итак - есть файл с 10 000 000 строк. Файл CSV. В нем несколько столбцов. Примерный объем файла несколько десятков мегабайт. Все это нужно импортировать на совершенно обычный хостинг так, что бы нагрузка на сервер была минимальна и по времени и по ресурсам.

Чего мы только не пробовали - как только не выкручивались, а в MySQL уже за нас все давно придумали :)

Итак. Нам понадобится всего две команды (точнее даже три, но одна идентична другой):

Первой и последней будет команда MySQL включения/отключения не уникальных индексов:

ALTER TABLE db.my_table DISABLE KEYS;

Затем загружаем сам файл:

LOAD DATA INFILE 'data.csv' INTO TABLE db.my_table;

И завершим включением индексов:

ALTER TABLE db.my_table ENABLE KEYS;
Другие публикации