在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

查询结果如下,红框部分的数据就是有差异的内容。

你是两个数据库还是一个库下的两个USER!~

如果是一个库里的两个user

SELECT * FROM SANWA_ADMIN.MU010,UCOOP.MC00030

在表前面加上用户名就可以了!~

你还是详细说下吧!~

方法一、用PL/SQL DEVELOPER 来比较

1.登陆数据库A.

2.打开TOOLS菜单下的Compare User Objects

3.点Target Session,登陆数据库B

4.执行Compare

5.返回的是所有不同的对象以及更新语句[@more@]方法二、

1、对需要比较的表进行分析(可全表可抽样,自选),否则统计信息不准;

2、通过dba_tab_col_statistics表的column_name字段进行比较

select tz.table_name ,tz.column_name from dba_tab_col_statistics tz

WHERE tz.owner = 'BSS' AND TZ.TABLE_NAME LIKE 'BSS_%'

and (TZ.TABLE_NAME ,TZ.COLUMN_NAME) not in(

select TZT.TABLE_NAME ,TZT.COLUMN_NAME

from dba_tab_col_statistics@tz_bsstzt tzt

WHERE tzt.owner = 'BSS' AND TZT.TABLE_NAME LIKE 'BSS_%')


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6620419.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-25
下一篇 2023-03-25

发表评论

登录后才能评论

评论列表(0条)

保存