filnor
@filnor
¯\_( ツ)_/¯

Как настроить импорт прайсов из excel в БД?

Добрый день.

Есть несколько различных файлов прайсов в excel, импорт которых нужно настроить в БД.
Проблема в том что все файлы имеют разную структуру, количество позиций и т. д.

Какие есть варианты реализации подобного функционала?
  • Вопрос задан
  • 273 просмотра
Решения вопроса 3
valerium
@valerium
Изобретая велосипед
По всей видимости, файлы приходят из разных источников?

В таком случае разумно написать класс Товар, который не делает почти ничего, только описывает основные поля и имеет методы записать_в_базу() и, возможно, проверить_наличие_в_базе().

Далее на каждый источник файлов пишется свой парсер, который разбирает файл на массив таких объектов и у каждого по очереди вызывает сначала метод проверить_наличие_в_базе(), и при отрицательном ответе вызывает записать_в_базу().

Если нужно не только заносить новые объекты, но и обновлять старые, то логика второго пункта чуть усложняется, но не критично.
Ответ написан
grigruss
@grigruss
Пока не задал ни одного вопроса... только отвечаю.
Отталкиваться от закономерностей в полях прайсов. Допустим поле цены обычно содерит только цифры, а поле с наименованием либо в первом, либо во втором столбце (первый часто делают для нумерации позиций). Бывает столбец с типом валюты. Бывает скидочный столбец... И учитывая определенные особенности можно задавать условия для загрузки в БД. Например, если первый столбец имеет числовое значение -> идём ко второму столбцу -> если здесь текст: определяем как имя товара -> следующий столбец: если имеется "%" значит скидка -> следующий: если "руб" или "usd" значит тип валюты -> следующий: если число значит цена.
P.S.: а можно вообще сделать подгрузку правил из внешнего файла, к примеру в формате INI или XML. А в нём указывать, какое по счёту поле в куда загружать. И в обычном блокноте за пару минут создавать правила для прайса нового контрагента.
Ответ написан
1. На каждый тип сделать свой отдельный парсер, в БД приводить всё к общему виду.
2. В БД иметь столько таблиц сколько типов прайсов у вас есть, каждый тип писать в свою таблицу
3. Заморочиться с универсальным парсером который сам определяет тип, но тут сильно звисит от их количества и различий
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
MaxDukov
@MaxDukov
впишусь в проект как SRE/DevOps.
а я бы попробовал анализировать заголовок таблицы. Ну не так уж и много синонимов у "названия товара".
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы