2

あるデータベース (DB1) から行を読み取り、別のデータベース (DB2) にコピーする ETL スクリプト (別のデータベースの後に実行される) を開発する必要があります。

問題は、DB1 から行を選択するクエリが、次のように DB2 の行と結合することです。

SELECT db2.tableA.columnA, db1.tableA.columnA
    FROM db2.tableA
    LEFT OUTER JOIN db1.tableA
    ON db1.tableA.columnB = db2.tableA.columnB

クエリタグが1つの接続IDを受け取るため、これを解決するのに苦労しています

ありがとう!

4

1 に答える 1

0

特定の結合のビジネス上の意味を判断するのは難しいですが、実装の観点から最も簡単な方法は、db1.tableA のコピーである一時テーブルを db2 に作成することだと思います。例:

<connection id="db1" ....>
<connection id="db2" ....>

<script connection-id="db2">
    CREATE TABLE tableAFromDb1 (
           ....
    );
</script>
<query connection-id="db1">
   <!-- Copy all rows from db1 to db2 -->
   SELECT columnA, columnB FROM db1.tableA
   <script connection-id="db2">
        INSERT INTO db2.tableAFromDb1 (columnA, columnB) VALUES (?1, ?2);
   <script>
</query>
<!-- Produce the outer join if necessary or directly manipulate the tableAFromDb1 dataset --    >
<query connection-id="db2">
    SELECT columnA, columnA
        FROM tableA LEFT OUTER JOIN
        tableAFromDb1 ON tableAFromDb1.columnB = tableA.columnB

    <script>
       TODO Insert the result somewhere
    </script>
</query>
于 2014-01-21T22:23:50.117 に答える