В новом проекте приходится очень часто импортировать большие объемы информации. Перебрали несколько совершенно разных подходов и хотим поделиться тем, который, на наш взгляд (для нас так точно) :) оказался самым эффективным из все. Итак - есть файл с 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;