埋め込み可能なJava ETL、つまりJavaコードから呼び出すことができるExtractTransformLoadエンジンを探しています。
適切なものを見つけるのは驚くほど難しいと思います。
私は主に、区切られたテキストファイルをデータベーステーブルにロードすることを検討していますが、途中でいくつかのマイナーな変換が行われます。
次の機能が欲しいのですが。
CloverETLではマッピングをXMLで指定できますが、データベース接続はJNDI名か、driverClass、url、dbusername、passwordなどを指定するプロパティファイルである必要があります。すでにjavax.sql.Datasource
s依存性注入フレームワークによって設定されたプロパティファイルは、特にこれを複数の環境(dev、test、prod)で機能させたい場合は、苦痛で堅牢ではないように見えます。
KETLによると、「現在、KETL™のドキュメントを完全に見直す過程にあります。このため、インストールガイドのみが更新されています。」正直ですが、役に立ちません。
Octopusは現在「http://www.together.at/prod/database/tdt」であり、「作成中」です。
Pentaho seemsデータソースを使用するのではなく、CloverETLと同じ「specifydriverClass」スタイルを使用しますが、Javaコードからエンジンを呼び出すためのPentahoのドキュメントは非常に難しいです見つけるには。
基本的に、私はこの疑似コードを実行できるようにしたいと思っています。
extractTransformLoad(
getInputFile( "input.csv" ) ,
getXMLMapping( "myMappingFile.xml") ,
new DatabaseWriter( getDatasource() );
助言がありますか?
開示:私は Scriptella ETL の作成者ですが、このツールがあなたのケースに役立つと思います。
これは、Javaとのワンライナー統合を備えた軽量のオープンソースETLです。また、 Spring Frameworkをサポート 、CSV、テキスト、XML、Excel、その他のデータソース用の 組み込みドライバー が付属しています。
<!DOCTYPE etl SYSTEM "http://scriptella.org/dtd/etl.dtd">
<etl>
<connection id="in" driver="csv" url="data.csv" />
<connection id="out" driver="Oracle" url="jdbc:Oracle:thin:@localhost:1521:ORCL"
classpath="ojdbc14.jar" user="scott" password="tiger" />
<!-- Copy all CSV rows to a database table -->
<query connection-id="in">
<!-- Empty query means select all columns -->
<script connection-id="out">
INSERT INTO Table_Name VALUES (?id,?priority, ?summary, ?status)
</script>
</query>
</etl>
// Execute etl.xml file
EtlExecutor.newExecutor(new File("etl.xml")).execute();
scriptella [file_name]
使用する "spring"
ドライバーとデータソースを参照するBeanの名前。例:
<connection id="spring" driver="spring" url="datasourceBeanName" />
ジョブを実行するには、アプリケーションコンテキストにEtlExecutorBean
を追加します。
<bean id="createDb" class="scriptella.driver.spring.EtlExecutorBean">
<property name="configLocation" value="create-db.etl.xml" />
<property name="progressIndicator"><ref local="progress" /></property>
<property name="autostart" value="true" /> <!-- Etl will be run during app context initialization -->
</bean>
詳細については、 春の例 を参照してください。
知っていますか Talend ?
これはEclipse(Talend Open Studio)に基づくツールですが、独自のコードを作成するか、ジョブをJavaクラスにエクスポートすることにより、Java)で直接使用できます。 。
ここ はすべてのJavaベースのオープンソースETLライブラリのリストです。すでにいくつか評価しているようですが、もっとあります。また、これは https://stackoverflow.com/questions/272517/please-recommend-a-powerful-Java-based-etl-framework の複製
CloverETL Engineは、簡単に埋め込み可能で拡張可能であるため、独自の接続を作成してCLoverETLに接続できます。 DBConnectionオブジェクトはCloverETL3.1でわずかに変更され、より拡張可能になり、データベースへの接続にDataSourceを使用するその子孫の実装は子供の遊びのようになります。