现在有两个DB,每个DB都有同样的表。
如何根据用户指定的检索条件,判断两个DB中的相同表的数据是否完全一致?

解决方案 »

  1.   

    1、最简单的两个db的表做minus。2、将数据按照固定顺序spool出来,然后对spool出来的数据做diff。
      

  2.   

    两个表 A 和 表B,表结构一样,那么select * from A
    minus
    select * from B有结果出来,说明两个表的数据就不一样。
    你现在是两个DB,那么从其中一个建一个database link 连接到另外一个上面就行了。
    至于第二种方法,可以不学,能用数据库本身功能实现的就用数据库本身的功能。
      

  3.   

    大奔哥提供的两个方法中第一个最优,第二个比较占空间,感觉不太好,性能估计也不太好.先建好DBlink,用第一种方法比较合理
    把两个数据库的表数据相互做差集运算,如果都得不到数据的话说明他们是完全一致
    逻辑如下:
    if(select * from table_name 
    minus 
    select * from table_name@DB_link) has data then
    return false 
    else if(
    select * from table_name@DB_link
    minus 
    select * from table_name) has data then 
    return false
    end if
    return true
      

  4.   

    参考这个帖子:
    http://topic.csdn.net/u/20080605/15/168b4cc0-c82f-469b-838d-6a64f98cd9a3.html
      

  5.   

    WITH a AS
    (SELECT 1 FROM dual
    UNION ALL
    SELECT 2 FROM dual
    ),b AS
    (SELECT 1 FROM dual
    UNION ALL
    SELECT 3 FROM dual
    )
    (SELECT * FROM a 
    MINUS
    SELECT * FROM b)
    UNION ALL
    (SELECT * FROM b 
    MINUS 
    SELECT * FROM a)
    --result:
    2
    3
      

  6.   

    假设在第一个db上建了dblink连接到第二个db上
    create database link dblink_name connect to user_name identified by password using
    连接字符串
    select * from A
    minus
    select * from A@dblink_name