Scriptella - DB到DB ETL脚本,它使用输出中的行来填充新表

时间:2014-01-20 19:23:36

标签: database etl scriptella

我需要开发一个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

谢谢!

1 个答案:

答案 0 :(得分: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>