1

我有两个结构相同的数据库,我想比较数据库之间的记录。第二个数据库中的记录是从第一个数据库中复制的,但是复制过程有时不起作用,并且在一个表中的第一个数据库中,我的记录比第二个数据库中的同一个表中的记录多。所以我想知道第二个数据库中不存在第一个数据库中的哪些记录。我试过这样的东西:

<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 的查询结果为空时,不会执行脚本。

如何解决这个问题呢?

问候, 雅克

4

2 回答 2

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>
于 2013-03-27T14:37:05.480 回答
0

可能他不需要 if 条件,因为他的问题是脚本没有执行;)

于 2013-03-28T12:59:45.613 回答