Как эффективно выполнить массовую вставку(импорт из excel) в postgres?

Есть функционал импорта из excel файла, юзер может скормить файл приличных размеров(от 10 до 25к записей)
Использую laravel-excel в джобе дабы распарсить файл и вставляю чанками по 1к(тык), затем формирую дополнительные данные и вставляю их чанками по 5к.
На продакшен окружении вывалилась ошибка
(Doctrine\\DBAL\\Driver\\PDO\\Exception(code: HY000): SQLSTATE[HY000]: General error: 7 no connection to the server at

Основная трудность(как мне кажется) в том, что в базе уже приличное количество элементов(от 6 млн записей) в каждой из таблиц, куда производятся большие insert-ы и присутствуют по 4-8 индексов.
Советы из статьи(тык) кажутся вовсе не реализуемыми в рамках SaaS проекта, ведь эти данные могут вставляться и пару раз на дню.
Куда копать? Как выполнять такие операции? Как одолеть экзепшен?(база не падала, судя по логам и работоспособности сайта)
  • Вопрос задан
  • 300 просмотров
Пригласить эксперта
Ответы на вопрос 2
ky0
@ky0
Миллиардер, филантроп, патологический лгун
С десятками тысяч записей легко справится и COPY FROM из csv. Размер таблицы при инсертах на скорость вставки особо не влияет - это же не update.
Ответ написан
Комментировать
pLavrenov
@pLavrenov
Разработка сайтов
Зачем все эти 5к -10к, прошелся по файлу чанками по 1к (например), чанк перебрать через foreach и каждую запись в очередь. Там и времени и ресурсов для каждой записи предостаточно, мультипоточность и балансировка. А если база упадет или еще чего, все записи останутся в очереди и выполнятся как только смогут.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы