oracle 2017-03 同步数据有感.

本文介绍了一种将Excel数据导入Oracle数据库并与公司表进行对比的方法。通过创建临时表及运用SQL语句,实现了数据的有效对比,并针对不同情况给出匹配结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

描述: 难易点,给我一份企业信息的excel 文档, 需要将excel 数据导入 oracle 数据库,跟数据库中的公司表做对比, 并输出对比结果

对比逻辑 :  excel 数据( temp01 )                    VS                 公司表数据(company_info)

         1,   公司名字 和 公司税号一样      ==> 公司完全匹配

          2,  公司名字一样 ,税号不一致       ==>   公司名称重复

          3,  公司名字不一致, 税号相同       ==>   税号重复

思路:  数据库建张临时表 temp01 ,将excel 数据倒进入( for update ) 复制粘贴实现.

         A,  最开始是准备使用存储过程,写个plsql 来做这件事的, 但是后来放弃了. 

          存储过程开了,两个游标 做for 循环  遍历比较;  每次比较结束使用 update 语句,更新 temp01 表 result 结果字段

          数据量太大, 执行15 分钟后直接卡死.

         写存储过程中遇到比较坑爹的 问题  :   IF '  'THEN

                                                                               ELSIF  ''  then

                                                                             END IF  ;                    而不是  if  ''   then    else if  then  end if ;

          B,   使用 多张临时表 

             1,   select  temp01.*,company_name   from   temp01  left join  company_info    条件 公司名称      --- temp02

              2,  select temp01,*, tax_num  from temp01  left join  company_info    条件 税号             --- temp03

             3, temp02 left join  temp03    条件     temp01.id  = temp02.id    ----temp04

          比较

               select   t.*, (case  when   temp01.name = company_name  and  temp01.taxnum = taxnum then' 公司完全匹配 ' 

                                        when   temp01.name = company_name  and  temp01.taxnum <> taxnum then' 公司名称重复'

                                        when   temp01.name = company_name  and  temp01.taxnum <> taxnum then' 税号重复'

                                       else null  end )  result

                        from temp04  t



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值