170 похожих чатов

Вопрос: как импортировать xlsx файл на 20к строк в БД

за быстро около 30 секунд и с минимальным использованием памяти?
Пока варианты такие:
-Библиотека maatwebsite/excel и через chunk, чтобы экономить память
- Библиотека rap2hpoutre/fast-excel, там выделение памяти вроде на много меньше и быстрее работает

30 ответов

16 просмотров

Посмотри xlsx_write

https://github.com/mk-j/PHP_XLSXWriter

Artem-Kanarskyi Автор вопроса
Артур
https://github.com/mk-j/PHP_XLSXWriter

Так там запись в файл, а мне нужно прочитать файл и записать в БД 😞

Artem-Kanarskyi Автор вопроса
Артур
Тогда посмотри в сторону Laravel Excel

Ещё смотрю в сторону конвертировать в csv и через load data

Artem Kanarskyi
Ещё смотрю в сторону конвертировать в csv и через ...

Конвертация в csv через Php займет много памяти

конвертировать внешней приблудой типа как тут советуют https://stackoverflow.com/questions/10557360/convert-xlsx-to-csv-in-linux-with-command-line и потом сделать load data прямо в БД

Vitaly Larin
конвертировать внешней приблудой типа как тут сове...

наврядли за 30 секунд получится. даже считать за такое время нереально.

Взять в аренду 1сек супер компьютера

Я вот ваще не понимаю как отвечать на такое, типа 20к строк а в нём 1 столбец с инкрементом и он выполняется 2ч потому что сервер 🥔?

https://github.com/AsperaGmbH/xlsx-reader тут можно фиксануть вроде как память, после чего будет ФС использоваться

Maksim Y.
Я вот ваще не понимаю как отвечать на такое, типа ...

У меня на локалке и миллион строк инсертится за 20 сек или каждая строка паралельно ещё 500 апи обращений делает

Очень сложно, ну хз, создай 500 воркеров или чё надо?

Artem-Kanarskyi Автор вопроса

как вы этого достигли?

Купил несколько клубней картофеля и поливал водой

Maksim Y.
Купил несколько клубней картофеля и поливал водой

я серьезно хотел бы узнать как организовать вставку при помощи воркеров одновременно и еще учитывать время потраченно на обращение к api. доп инструменты используются или на чисто laravel?

Artem-Kanarskyi Автор вопроса
Artem Kanarskyi
Фантазией

Речь шла не про Эксель

Paul Zhabov
я серьезно хотел бы узнать как организовать вставк...

Ларавеля хватит, воркеры есть, время учитывать всего не делал, можно например только апи замерять

Artem Kanarskyi
Фантазией

у меня задача просто есть. на отдельном серваке запускать сервис который бы считал данные о порядка 60 000 цен товаров где будет только id и цена в итоге. и потом эти данные синхронизировать с другой базой данных с таблицей product_prices чтоб не по одной записи апдейтить а пачками. при этом если в таблице есть такой id товара чтоб цена просто апдейтилась а если нет такого id товара чтоб создавалась запись. вот ищу подход как это сделать. и желательно при помощи большого числа воркеров когда на входе имеем только массив id и цен. либо в редис их собрать сначала а потом как то в mysql передать.

Paul Zhabov
у меня задача просто есть. на отдельном серваке з...

60k строк это вообще ни о чем🤷‍♂ можно разбить на чанки по 5к строк и в очередь загнать, вряд ли будет дольше минуты работать

В ларе же есть upsert

Serg 🐧 Serdyuk
В ларе же есть upsert

ооо. вот как! а когда я начинал работать с ларавел такой функции еще небыло. и приходиолсь с гита выкачивать стороннюю либу которая помогала такое реализовывать

30 сек это очень много времени

Vitaly Larin
30 сек это очень много времени

ну я отталкивался из своего опыта. что на считывание данных из экселя при помощи обычных php либ требуется время. Либо память.

Paul Zhabov
ну я отталкивался из своего опыта. что на считыван...

там не php используется .. зачем конвертить файл через php? если на уровне системы это будет явно быстрее .. аналогично потом быстрее запихнуть csv через тулзу БД чем делать это через пыху ..

Vitaly Larin
да

а как забрать данные из экселя при помощи ядра линукс ?

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

Обсуждают сегодня

Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
> Копаем глубже > Следующий момент был, когда я спросил его, знает ли он JavaScript. Он ответил, что его учили работать с C#. Я тоже в университете писал на C#, но даже там мн...
Oleg Volkov
4
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
И никого не интересует какие пакеты кто использует. ((% Заходишь на сайт симфони и видишь поддержку Украины - по законам РФ это ж экстремизм. Только никто не отказывается от с...
Am Ambrion
11
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
7
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Карта сайта