2

我需要开发一个 ETL 脚本(在另一个之后运行),它从一个数据库 (DB1) 读取行并将它们复制到另一个数据库 (DB2)。

问题是从 DB1 中选择行的查询与 DB2 中的行连接,如下所示:

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

我无法解决这个问题,因为查询标签收到一个连接 ID

谢谢!

4

1 回答 1

0

我很难判断特定连接的商业意义,但我相信从实现的角度来看,最简单的方法是在 db2 中创建一个临时表,它是 db1.tableA 的副本。例子:

<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 回答