Я пытаюсь импортировать определенный файл .CSV в свою базу данных, используя PDI (Kettle).
Обычно это было бы довольно просто, так как вы можете просто связать шаг CSV file input
с шагом Table output
и все готово. Однако проблема в том, что я не знаю, какой файл я хочу импортировать заранее, как перед выполнением задания/преобразования в PDI.
Это потому, что у меня есть много файлов в моей папке импорта, и все они имеют одинаковый формат имени файла: KeyDate_Filename_YYYYMMDD.CSV
Идея состоит в том, чтобы иметь файл с самым новым ГГГГММДД, импортированным для данной контрольной даты.
Мой теоретический подход к реализации этого будет следующим:
- Сделать заданную контрольную дату доступной в PDI в качестве параметра (уже сделано)
- Прочитать имена всех файлов, хранящихся в папке импорта
- Отфильтровать указанные имена файлов для заданной контрольной даты
- Сравните ГГГГММДД оставшихся файлов и выберите самый новый
- Использовать выбранное имя файла в качестве параметра на шаге
CSV file input
(уже сделано) - Импорт данных через шаг
Table output
(уже сделано)
К сожалению, я новичок в PDI и на самом деле не имею убедительного представления о том, как реализовать выделенные жирным шрифтом части или жизнеспособность этого подхода в целом.
Кто-нибудь может придумать, как это сделать? Ценим любые отзывы
Изменить: забыл упомянуть, что я использую PDI 3.2.6.
В 4.x.x я мог бы просто использовать пользовательский класс Java, чтобы сделать это:/