我需要开发一个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
谢谢!
答案 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>