Я ищу встраиваемый Java ETL, т.е. механизм Load Extract Transform Load, который можно вызывать из кода Java.
Мне неожиданно трудно найти подходящую.
Я в основном смотрю на загрузку текстовых файлов с разделителями в таблицы базы данных с некоторыми незначительными преобразованиями на этом пути.
Мне нужны следующие функции:
- возможность указания простых сопоставлений извне, например текстового столбца 5 в столбец базы данных foo, указан некоторый файл сопоставления xml
- способность предоставить базу данных node javax.sql.Datasource
CloverETL позволяет сопоставлять отображение в XML, но соединения с базой данных должны быть либо именами JNDI, либо файлом свойств, определяющим driverClass, url, dbusername, password и т.д. Поскольку у меня уже есть javax.sql.Datasource
, настроенный моей инфраструктурой инъекций зависимостей, свойства файлов кажутся болезненными и ненадежными, особенно если я хочу, чтобы это работало в нескольких средах (dev, test, prod).
KETL говорит мне, что "мы в настоящее время полностью пересматриваем нашу документацию для KETL ™. Из-за этого обновлено только руководство по установке". Честный, но не полезный.
Octopus теперь "http://www.together.at/prod/database/tdt", который находится в стадии разработки.
Pentaho, похоже, использует тот же самый стиль, что и CloverETL, а именно, что использование источника данных, но документация Pentaho для вызова их движка из Java-кода просто трудно найти.
В принципе, мне очень хотелось бы иметь возможность сделать этот псевдокод:
extractTransformLoad(
getInputFile( "input.csv" ) ,
getXMLMapping( "myMappingFile.xml") ,
new DatabaseWriter( getDatasource() );
Любые предложения?