我有两个具有相同结构的数据库,我想比较数据库之间的记录。第二个数据库中的记录是从第一个数据库复制的,但复制过程有时不起作用,在一个表的第一个数据库中,我有比第二个数据库中的同一个表更多的记录。所以我想知道第一个数据库中哪些记录不存在于第二个数据库中。我尝试过类似的东西:
<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的查询结果为空时,脚本不会被执行。
如何解决这个问题?
此致 亚切克
答案 0 :(得分:1)
您可以使用count来检查实际的记录数。在这种情况下,结果集将始终返回一行。例如:
<query connection-id="db1">
SELECT * FROM table;
<query connection-id="db2">
SELECT count(id) as CNT FROM table WHERE id = ?id;
<!-- The script is executed ONLY IF number of results is zero -->
<script connection-id="text" if="CNT==0">
No matching record for id $id
</script>
</query>
</query>
答案 1 :(得分:0)
可能他不需要if条件,因为他的问题是脚本没有被执行;)