Загрузка больших данных в базу Laravel

Разобрал Excel файл в котором 23000 товаров. Возникает вопрос, как быстро засунуть их базу? И можно ли это сделать на локалке?


Ответы (2 шт):

Автор решения: Gvido

В общем, было решено использовать очереди. Сначала не мог разобраться, потом вкурил. Спарсил Excel и разбил массив на блоки по 200 строк. И каждый блок отправил в очередь. Очереди хранил в базе данных. На сервере можно будет развернуть Redis и работать в многопоточном режиме.

→ Ссылка
Автор решения: MAX GRIM

Ранее решал похожую задачу, во время которой нашел несколько вариантов.

  1. Самый быстрый способ это импорт, который можно делать и напрямую с Laravel посредством SQL запроса, смотрите в сторону LOAD DATA, файлом csv.(Загрузить 200к записей у меня занимало около 2 секунд, при условии типа таблицы MyISAM). Подробнее: https://dev.mysql.com/doc/refman/8.0/en/load-data.html
  2. Отправка пакетом через очереди, тут можно спокойно до 10к записей отправлять на одну очередь, можно даже через модель Model::insert($array). (Из минусов текущей реализации что данные могут быть вставлены произвольно(зависит какое задание закончит работу раньше), не по порядку, тут зависит от того как вы организовали массив)
→ Ссылка