描述: 难易点,给我一份企业信息的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