Импорт 20000 и + строк их Excel

Аватара пользователя
Morfei
Сообщения: 109
Зарегистрирован: 14 апр 2022, 19:13
Имя: Виктор
Откуда: Нерюнгри

Импорт 20000 и + строк их Excel

Сообщение Morfei »

Здравствуйте. Столкнулся с такой проблемой. Руководитель 3.3.1.
Решил импортировать таблицу в которой более 26000 строк. В итоге импортировалось только около 18000. При это появилось как положено сообщение на зеленом фоне, что импорт удачно завершен. По факту куска не хватает. Повторяю импорт того же файла но уже выбираю "Обновить и добавить новые" Появляется так же сообщение, что импорт прошел успешно обновлено 18000 и добавлено еще 4500. Почему не может загрузить целиком таблицу? Сессии в server.php выставил как

Код: Выделить всё

define('STORE_SESSIONS', '');
Не помогло. Может кто сталкивался с таким уже? :(
believe
Инвестор
Инвестор
Сообщения: 476
Зарегистрирован: 09 янв 2020, 11:49
Имя: Владимир
Откуда: Тверь
Организация: ООО "ВебСофт"

Re: Импорт 20000 и + строк их Excel

Сообщение believe »

Была похожая ситуация, хостинг не "переваривал". Грузил поэтапно.
nruslan2
Сообщения: 2412
Зарегистрирован: 14 окт 2020, 09:13
Имя: Ruslan
Откуда: Moscow
Контактная информация:

Re: Импорт 20000 и + строк их Excel

Сообщение nruslan2 »

аналогично, грузил частями по 8000 записей.
Аватара пользователя
Morfei
Сообщения: 109
Зарегистрирован: 14 апр 2022, 19:13
Имя: Виктор
Откуда: Нерюнгри

Re: Импорт 20000 и + строк их Excel

Сообщение Morfei »

Ну как бы с сервером порядок. 62Гб оперативы и 48 "ведер" LA = 0,01 :-) Думаю тут чего то в другом дело. Он же сообщает что импорт успешен, но не понятно почему файл не весь? Ежели бы он ошибку выдавал, тут да, а так вообще не ясно что происходит. Это чего то с парсером возможно, но это не точно. :-) Ну и опять же ежели мне нужно автоматизировать как тогда по частям? Просто получится что не все будет отрабатывать. А в планах есть сделать автоматизацию обновления по URL.
Аватара пользователя
support
Техническая поддержка
Сообщения: 8993
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: Импорт 20000 и + строк их Excel

Сообщение support »

Дело не только в железе. Размер переменной в пхп время выполнения скрипта так же имеют свои ограничения. Похожие ограничения есть в mysql, там всякие буферы и т.д.
Так даже сложно предположить где проблема, так как ошибки нет.
Может что в логах пхп есть на сервер?
Может поддержка хостинга как то поможет?
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 744
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Импорт 20000 и + строк их Excel

Сообщение Fait »

Я такое решал вот так:
Создаю отдельную сущность, в которой есть поле для загрузки файла (лучше csv).
И затем создаю кнопку автоматизации, которая выполняет код.
А этот код действует по следующему алгоритму:
1) Открывает файл
2) Пропускает заголовки
3) Считывает строку и формирует массив данных
4) С помощью items::insert создаёт новую запись в нужной сущности. Также можно написать условие, чтобы старая запись обновлялась, но это уже другая история :D

Да, может это костыль, но работает безупречно.

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

То есть человек формирует файл с выпиской в банке, потом загружает его в систему, и нажимает кнопку "Обработать выписку".
Сразу попутно идёт поиск дубликатов, создаются контрагенты, счета и т.д., если в системе их нет.

При этом у меня ещё визуально отображается, что именно будет импортироваться.
Аватара пользователя
Morfei
Сообщения: 109
Зарегистрирован: 14 апр 2022, 19:13
Имя: Виктор
Откуда: Нерюнгри

Re: Импорт 20000 и + строк их Excel

Сообщение Morfei »

support писал(а): 28 фев 2023, 08:15 Дело не только в железе. Размер переменной в пхп время выполнения скрипта так же имеют свои ограничения. Похожие ограничения есть в mysql, там всякие буферы и т.д.
Так даже сложно предположить где проблема, так как ошибки нет.
Может что в логах пхп есть на сервер?
Может поддержка хостинга как то поможет?
Время выполнения менял, ничего не поменялось. MySQL если бы ошибки были тоже бы выдал. Посмотрю еще php, думаю может чего то с сессиями. Потому как когда сессии сохранялись в mysql, тоже были проблемы с загрузкой больших Excel. Переключил на сессии php до 22000 начал грузить нормально. Но теперь тоже проблемы. :-(

PS. Перепроверил все логи php тишина. Просто ошибок 0. И интересен еще тот факт что удаляет из базы потом все эти 25000 записей дольше раза в три чем загружает в базу. Удаляет уже примерно 30 минут и еще осталось 6000 записей. Чейто как то должен вроде шустрее очищать базу. Не?
Аватара пользователя
Morfei
Сообщения: 109
Зарегистрирован: 14 апр 2022, 19:13
Имя: Виктор
Откуда: Нерюнгри

Re: Импорт 20000 и + строк их Excel

Сообщение Morfei »

Дело все таки в парсере xlsx. По каким то причинам просто пропускает строки. Я их нашел, но они ничем не отличаются от других. :roll: Оставляю только три строки, включая ту которую не импортирует. И импорт происходит только 2-х, а одну принципиально не импортирует. :)
Аватара пользователя
support
Техническая поддержка
Сообщения: 8993
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: Импорт 20000 и + строк их Excel

Сообщение support »

Использую библиотеку https://phpspreadsheet.readthedocs.io/en/latest/
У них там новая версия вышла, для 3.4 обновлю.
Аватара пользователя
SalahievFR
Сообщения: 277
Зарегистрирован: 22 янв 2023, 10:14
Имя: Фанис Салахиев
Откуда: Россия Казань
Контактная информация:

Re: Импорт 20000 и + строк их Excel

Сообщение SalahievFR »

Fait писал(а): 28 фев 2023, 09:29 Я такое решал вот так:
Создаю отдельную сущность, в которой есть поле для загрузки файла (лучше csv).
И затем создаю кнопку автоматизации, которая выполняет код.
А этот код действует по следующему алгоритму:
1) Открывает файл
2) Пропускает заголовки
3) Считывает строку и формирует массив данных
4) С помощью items::insert создаёт новую запись в нужной сущности. Также можно написать условие, чтобы старая запись обновлялась, но это уже другая история :D

Да, может это костыль, но работает безупречно.

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

То есть человек формирует файл с выпиской в банке, потом загружает его в систему, и нажимает кнопку "Обработать выписку".
Сразу попутно идёт поиск дубликатов, создаются контрагенты, счета и т.д., если в системе их нет.

При этом у меня ещё визуально отображается, что именно будет импортироваться.
Расскажите подробнее) с примером кода.
Ответить