当前位置:主页 > 油箱盖 >

比较Oracle两张表的数据是否一样

发布时间:19-12-06 阅读:591

在某些环境下,我们会必要对照两张表的数据是否一样。

假设有两张表A与表B他的字段相同,然则傍边的数据可能不合,而且有些字段的数据还有可能为空

措施一(手动):把必要对照的两张表的数据按照某种规则排序后导出为xls,这里我直接用PL/SQL Developer导出

然后用把xls文件转换成txt文件,这里我用的是batconv转换公式

现在我们就有了两个txt文件。

然后用beyond compare文件对照器对照内容。

优点:数据差异一清二楚,毛病:对照费时。

措施二(经由过程Sql语句来对照)

创建表的语句:

create table student(

stuId varchar2(50) primary key--自动天生的,独一的。

stuName varchar2(50),

stuContent varchar2(2000),

stuType varchar2(20),

)

傍边除id不为空,其它三项均可能为空。

一样平常环境下我们可以用

select * from studentA A where not exists (select * from studentB B where A.stuName = B.stuName and A.stuContent = B.stuContent and A.stuType = B.stuType)

在oracle 环境下假如两张表的某个字段都为null则其经由过程A.*=B.*是对照不出来的。

是以要额外加上这样的判断or(A.stuContent is null and B.stuContent is null) or

(A.stuName is null and B.fomrulaName is null) or (A.stuType is null and B.stuType is null)

经由过程上面这个sql语句我们就可以找在A表中存在,但在B表中不存在的数据

反过来可以查询在B表中存在,但在A表中不存在的数据。

若两个查询都为空,则阐明两张表的响应字段完全相同。

若这两张表在不合的数据库,则要经由过程建立DBLink,可以拜见我的转贴

优点:数据对照快,分外是在数据量对照大年夜的数据上风加倍显着,

毛病:对照时不能很快看出两张表的差异。由于查询的只是傍边的某一张表。



上一篇:Photoshop制作单色质感金属字
下一篇:邓超鹿晗为陈赫庆生 兄弟间互怼感情好到让人羡