23

埋め込み可能な Java ETL、つまり Java コードから呼び出すことができる Extract Transform Load エンジンを探しています。

適切なものを見つけるのは驚くほど難しいと思います。

私は主に、区切りテキスト ファイルをデータベース テーブルにロードすることを検討していますが、途中でいくつかの小さな変換を行います。

以下の機能が欲しいです。

  • 単純なマッピングを外部から指定する機能。たとえば、テキスト列 5 からデータベース列 foo への指定、xml マッピング ファイルの指定
  • データベース ノードに javax.sql.Datasource を与える機能

javax.sql.DatasourceCloverETL ではマッピングを XML で指定できますが、データベース接続は JNDI 名か、 driverClass 、url、dbusername、パスワードなどを指定するプロパティ ファイルのいずれかである必要があります。特にこれをいくつかの環境(開発、テスト、本番)で動作させたい場合は、堅牢ではありません。

KETL は、「現在、KETL™ のドキュメントを完全に見直しているところです。このため、インストール ガイドのみが更新されました。」と語っています。正直ですが、役に立ちません。

Octopus は現在、「http://www.together.at/prod/database/tdt」であり、「構築中」です。

Pentaho、データソースを使用するのではなく、CloverETL と同じ「specify driverClass」スタイルを使用しているようですが、Java コードからエンジンを呼び出すための Pentaho のドキュメントは見つけるのが難しいだけです。

基本的に、私はこの疑似コードを実行できるようにしたいと思っています:

extractTransformLoad(         
        getInputFile( "input.csv" ) , 
        getXMLMapping( "myMappingFile.xml") ,
        new DatabaseWriter( getDatasource() );

助言がありますか?

4

4 に答える 4

15

開示:私はScriptella ETLの作成者ですが、このツールがあなたのケースに役立つと思います。

これは、Javaとのワンライナー統合を備えた軽量のオープンソースETLです。また、Spring Frameworkをサポートし、CSV、テキスト、XML、Excel、およびその他のデータソース用の組み込みドライバーが付属しています。

CSVファイルをテーブルにインポートする例:

<!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>

Javaから実行:

// Execute etl.xml file
EtlExecutor.newExecutor(new File("etl.xml")).execute();

コマンドラインから実行:

scriptella [file_name]

Springとの統合:

  1. "spring"データソースを参照するには、ドライバーとBeanの名前を使用します。例:

    <connection id="spring" driver="spring" url="datasourceBeanName" />
    
  2. 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>
    

詳細については、Springの例を参照してください。

于 2012-11-07T14:16:24.407 に答える
4

タレントを知っていますか?

これは Eclipse (Talend Open Studio) に基づくツールですが、独自のコードを記述したり、ジョブを Java クラスにエクスポートしたりすることで、Java で直接使用できます。

于 2010-11-24T17:01:39.007 に答える
1

以下は、すべての Java ベースのオープン ソース ETL ライブラリのリストです。すでにそれらのいくつかを評価したようですが、さらに多くのものがあります。また、これはhttps://stackoverflow.com/questions/272517/please-recommend-a-powerful-Java-based-etl-frameworkの複製のようです

于 2010-11-23T02:53:35.293 に答える
0

CloverETL Engine は簡単に組み込みおよび拡張できるため、独自の接続を記述して CLoverETL にプラグインできます。DBConnection オブジェクトは CloverETL 3.1 でわずかに変更され、より拡張可能になり、データベースへの接続に DataSource を使用するその子孫の実装は子供の遊びのようになります。

于 2011-05-27T14:49:23.810 に答える