我有两个数据库具有相同的结构,我想比较数据库之间的记录。第二个数据库中的记录是从第一个数据库复制的,但复制过程有时不起作用,并且在一个表的第一个数据库中,我有比第二个数据库中的同一个表中的记录多的记录。所以我想知道第一个数据库中的哪些记录不存在于第二个数据库中。我曾尝试过类似的东西:处理查询中的空结果集
<etl>
<connection id="db1" driver="auto"
url="jdbc:mysql://localhost:3306/db" user="user"
password="xxx"
classpath="C:/mysql-connector-java-5.1.20.jar" />
<connection id="db2" driver="auto"
url="jdbc:mysql://localhost:3307/db" user="user"
password="xxx"
classpath="C:/mysql-connector-java-5.1.20.jar" />
<connection id="text" driver="text" />
<query connection-id="db1">
SELECT * FROM table;
<query connection-id="db2">
SELECT * FROM table WHERE id = '$id';
<script connection-id="text">
sometext, $rownum
</script>
</query>
</query>
</etl>
问题是,当针对db2的查询结果为空时,脚本未执行。
如何解决这个问题?
问候, 亚切克
太好了!有用!问题是我不明白嵌套查询和脚本中变量的可见性。我在哪里可以找到一个好的描述? – user1337302 2013-03-29 08:22:16
恐怕没有简单的解释变量上下文是如何工作的。我会在scriptella.wordpress.com上发布一篇文章,如果我终于得到了一些时间(你知道操作系统人员吸收正确的文件)。但简单地说,这个想法很简单 - 执行查询时,对于每个返回的行,它调用嵌套的脚本(或其他查询元素),当前行的列值可作为这些**内**元素的变量。您可以将查询包含到其他查询中,但是逻辑相同,所有父列仅适用于子级,但不适用于兄弟。 – ejboy 2013-03-29 12:38:52