2017-06-14 5 views
0

私はItemReader用のSQLクエリリーダーを1つだけ持っています。春バッチ| JdbcPagingItemReader <T>は複数のデータソースにまたがる結合クエリをサポートするために複数のデータソースをサポートしていますか?

しかし、私のクエリ例外は、2つの異なるデータソースからテーブルを結合して単一の出力結果を提供することです..あなたは、2つの異なるデータベースに参加することはできないだろう単一のクエリで

<bean id="userFinder" 
     class="org.springframework.batch.item.database.JdbcPagingItemReader" 
     scope="step"> 
    ... 
    ... 
      class="org.springframework.batch.item.database.support.SqlPagingQueryProviderFactoryBean"> 
      <property name="dataSource1" ref="dataSource1" /> 
      <property name="dataSource2" ref="dataSource2" /> 
      <property name="selectClause" 
       value="SELECT ALIAS1.COL1, ALIAS2.COL2 " /> 
      <property name="fromClause" value="FROM dataSource1.TABLE1.ALIAS1, dataSource2.TABLE 2.ALIAS2" /> 
      </property> 
      <property name="sortKey" value="WLT_ID" /> 
     </bean> 
    </property> 
+2

'DataSource'は実際の' java.sql.DataSource'を意味しますか?それがあれば、いいえ。私はそのようなストレートSQLを介してデータベース間の結合をサポートする技術を知らないです... –

+0

はい。私のアプリケーションでは、2つのデータソースをJNDIルックアップとして利用できます。 Oracleバックエンドでは、これらは個別のUSER /スキーマとして定義されています。 2番目のデータソース/スキーマのtable2で最初のデータソース/スキーマからtable1に参加したいと思います。プレーンなSQLでは、2つの異なるスキーマ/ユーザーのテーブルを結合することができます。それは可能ですか? – Ketan

+0

代替手段は、データベースリンク(ORACLE)、FEDERATED MySQLストレージエンジン(MySQL)、Dblink(PostgreSQL)などを使用することです。 – Thrax

答えて

1

以下のようなもの。私はjavaで1つのクエリを実行する2つのデータソースを使用することはできませんと思います。

カスタムItemReaderを作成して、両方のデータソースを注入することができます。 テーブルからデータを取得し、Javaコードで結合します。これは非常に高価な操作になります

+0

はい...カスタム実装を避けたかったです。 – Ketan

関連する問題