首页 > 数据库技术 > 详细

找出两个异构数据库的差异(找出其中的缺失记录)

时间:2020-03-31 22:52:16      阅读:94      评论:0      收藏:0      [点我收藏+]

 

 

-- oracle
select
     substr(md5(key_id),1,1) as flag
    ,count(1)             as cnt
from (
    select 1  as key_id union all 
    select 2  as key_id union all 
    select 3  as key_id union all 
    select 4  as key_id union all 
    select 5  as key_id union all 
    select 6  as key_id union all 
    select 7  as key_id union all 
    select 8  as key_id union all 
    select 9  as key_id union all 
    select 10 as key_id
) t1
group by 
    substr(md5(key_id),1,1)
;
+------+-----+
| flag | cnt |
+------+-----+
| 1    |   1 |
| 4    |   1 |
| 8    |   1 |
| a    |   1 |
| c    |   3 |
| d    |   1 |
| e    |   2 |
+------+-----+

-- hive
select
     substr(md5(key_id),1,1) as flag
    ,count(1)             as cnt
from (
    select 1  as key_id union all 
    select 2  as key_id union all 
    select 3  as key_id union all 
    select 4  as key_id union all 
    select 5  as key_id union all 
    select 6  as key_id union all 
    select 7  as key_id union all 
    select 9  as key_id union all 
    select 10  as key_id
) t1
group by 
    substr(md5(key_id),1,1)
;
+------+-----+
| flag | cnt |
+------+-----+
| 1    |   1 |
| 4    |   1 |
| 8    |   1 |
| a    |   1 |
| c    |   2 |
| d    |   1 |
| e    |   2 |
+------+-----+

-- 经过比对,flag c有差异
-- oracle
select
     substr(md5(key_id),1,2) as flag
    ,count(1)             as cnt
from (
    select 1  as key_id union all 
    select 2  as key_id union all 
    select 3  as key_id union all 
    select 4  as key_id union all 
    select 5  as key_id union all 
    select 6  as key_id union all 
    select 7  as key_id union all 
    select 8  as key_id union all 
    select 9  as key_id union all 
    select 10 as key_id
) t1
where substr(md5(key_id),1,1) = c
group by 
    substr(md5(key_id),1,2)
;
+------+-----+
| flag | cnt |
+------+-----+
| c4   |   1 |
| c8   |   1 |
| c9   |   1 |
+------+-----+

-- hive
select
     substr(md5(key_id),1,2) as flag
    ,count(1)             as cnt
from (
    select 1  as key_id union all 
    select 2  as key_id union all 
    select 3  as key_id union all 
    select 4  as key_id union all 
    select 5  as key_id union all 
    select 6  as key_id union all 
    select 7  as key_id union all 
    select 9  as key_id union all 
    select 10 as key_id
) t1
where substr(md5(key_id),1,1) = c
group by 
    substr(md5(key_id),1,2)
;
+------+-----+
| flag | cnt |
+------+-----+
| c4   |   1 |
| c8   |   1 |
+------+-----+

-- 经过比对,flag c9有差异
-- oracle
select t1.*
from (
    select 1  as key_id union all 
    select 2  as key_id union all 
    select 3  as key_id union all 
    select 4  as key_id union all 
    select 5  as key_id union all 
    select 6  as key_id union all 
    select 7  as key_id union all 
    select 8  as key_id union all 
    select 9  as key_id union all 
    select 10 as key_id
) t1
where substr(md5(key_id),1,2) = c9
;

 

找出两个异构数据库的差异(找出其中的缺失记录)

原文:https://www.cnblogs.com/chenzechao/p/12609187.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!