Вставлять в mysql данные на 15мб каждую неделю

ShadowSnake

Новичок
Вставлять в mysql данные на 15мб каждую неделю

Может повторюсь...

Требуется загружать файл csv размером в мегабайт 10-15, каждую неделю и добавлять в базу. Файл - большой каталог автозапчастей. Проблем с загрузкой на сервер нет.

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

bosh

Новичок
LOAD DATA INFILE у многих хостеров выключен, ибо не безопасен.
Наверное, mysqlimport.
 

ShadowSnake

Новичок
Такс, будем думать со следующей недели. Пока ничего толкового в голову не приходит. Хотя, как вариант, порезать csv на несколько частей и по частям в базу заносить. У кого еще идеи есть?
 

Апельсин

Оранжевое создание
ShadowSnake, дело не в размере. Если при помощи LOAD DATA добавлять в базу, то это не так и много. Проблема в том, что если это хостинг, то как правило использование LOAD DATA отключено.
 

confguru

ExAdmin
Команда форума
Загружать по крону через бинарный php или
превратить этот csv в sql и грузить sql через командную строку
 

DiTHER

bang bang
перед заносом в базу оптимизируй индексы, и залочь таблицу. Ещё можно insert delayed into ...

ещё можно распихать пачками по 100-150 записей и делать так:
[sql]insert delayed into abc (col,col2) values (val,val2),(val3,val4),(val5,val6)...[/sql]

Минус способа - не проследить за ID добавленных вариантов. Почти.. :)

т.е. по 150 записей одним запросом. Можно и не по 150 конешно а поболе - главное чтобы было меньше лимита на размер пакета в mysql (если не ошибаюсь 2мб дефолт).

Ну а load data infile конечно абсолютный лидер по скорости. Но если нет возможности - увы.
 

HEm

Сетевой бобер
В любом случае время выполнения скрипта можно по ходу дела добавлять
[m]set_time_limit[/m]
Если конечно хостер не режет эту функцию
 
Сверху