Задать вопрос

Как сделать тяжелый импорт из excel 800к товаров?

Добрый вечер, возникла задача сделать выгрузку.

Мы имеем:
1. Фото
2. excel файл с 800к товарами
3. пустую sql таблицу

Все хорошо, все просто:
1. подключаем любую либу для работы php с excel
2. парсим информацию из документа
3. загружаем фото (имя файла = артикул )
4. заполняем таблицу sql.

Но возможно я недооцениваю скорость и возможности самых обычных хостингов (Характеристик железок не знаю, но возьмем самый классический рублей за 200, 2 гб памяти, hdd)
, но у меня по ощущениям, при попытке сделать все это, сервер сложиться и откажется проделывать это все 800.000 раз, так ли это, и как найти выход из этого?

Как вариант разбить весь процесс на части, по 50к товаров за 1 раз, но тут вопрос, как это реализовать?
У меня в голове только 1 вариант:
Брать срез в 50к записей со смещением, а смещение узнавать по GET параметру, например:

site.ru/import?step=2 (значит берем срез ( начиная с 50к товара и заканчивая 100к товаром)

Но я думаю что делаю какую-то колхозную чепуху своими срезами с get параметром, можно же как-то это сделать нормально?

Подскажите будьте добры
  • Вопрос задан
  • 5280 просмотров
Подписаться 12 Простой 14 комментариев
Ответ пользователя Antonio Solo К ответам на вопрос (17)
solotony
@solotony
покоряю пик Балмера
оптимально по быстродействию - LOAD DATA INFILE. но "минус" - валидацию не выполнить, и обновление тоже

если нужна валидация - надо парсить самостоятельно. Для ускорения SQL делайте вставки пакетами
insert ignore ..... values (),(),() ...

если нужно обновление
insert ignore ..... values (),(),() ... on duplicate key update

если скрипт обрубается лимитами - создавайте задание, и обрабатывайте по крон

800К это не много.
Ответ написан
Комментировать