Print

oracle两表对比查重

问:在ORACLE中,如何比较两个表的数据是否相同
  1. 答:如有两张相同表结构的表:
    test表:
    test1表:
    现在要找出两张表有差异的数据,需要用minus及union的方式查找出来,语句如下:
    select t1.* from
    (select * from test
    minus
    select * from test1) t1
    union 
    select t2.* from
    (select * from test1
    minus
    select * from test) t2;
    查询结果如下,红框部分的数据就是有差异的内容。
问:oracle怎么核对两个表的数据是否一致
  1. 答:Oracle中比对2张表之间数据是否一致的几种方法
  2. 答:pl/sql 具有对比表的功能
问:oracle中如何比较两个表之间所有栏位的数据是否完全相同
  1. 答:select t1, t2
    from (select count(*) cnt from a) t1,
    (select count(*) from ( select * from a minus select * from b) t) t2
    然后判断cnt1与cnt2是否相等,相等则完全相同,否则不完全相同
问:Oracle中比对2张表之间数据是否一致的几种方法
  1. 答:用并集和差集的方法
    (select * from a
    minus
    select * from b ) --查找a中存在,b中不存在的数据
    union
    (select * from b
    minus
    select * from a) --查找b中存在,a中不存在的数据
问:在oracle中 怎样对比两个数据库中相同表的数据?
  1. 答:如果两个数据库可以建立dblink,那么通过dblink就可以像在一个数据库一样去对比。
    如果不能建立dblink,那么就只能导出两行表,通过spool导出就可以。然后通过系统级别的命令去比对。我记得linux是有比较两个文件不同行的功能的。
    如果认为两个都导出比较麻烦,那就导出一个,在导入另外一个库(注意变换名字,否则表明重复就麻烦了),然后再对比。

本文来源: https://www.lw33.cn/article/80e737c2c69c08aeb644636c.html