Oracle 用merge into 解决插入重复数据问题

Oracle 用merge into 解决插入重复数据问题

继昨天解决用python向oralce插入数据问题,今天考虑到我插入的数据每次都是包含前一次插入的数据,太多重复值不利于之后的数据可视化,所以想着能不能插入数据的时候自动判别重复的值,只导入不重复的值,一开始用
install into a where a.t not in (select t from a )
结果报错,百度才知道install不能直接跟where,查询好久发现好多都指向用merge into,于是直接去搜了它的用法,感觉可行,就试着让表自己和自己去重,仔细想了一下发现逻辑上行不通,就想到建一个临时表,每次新增数据用python插入到临时表中,再用merge into 将临时表中不重复的插入最终表中

merge into  table1 a 
using table_temp b 
on(a.col = b.col)
when not matched then 
insert(col1,col2)--表a的所有列名 
values(b.col1,b.col2) --表b的所有列名

个人对merge into在本次需求中的理解:
table1 就是需要插入的表
table_temp 就是我的临时表,也就是需要将这个表里的数导入到需要被插入的表中
on 两个表中有代表意义唯一的值,例如学生id
when not matched then 当表b中数没有和表a匹配上时,也就是说此时我的临时表中的数和表a匹配后,将相同的数剔除剩余不同的部分
insert(col1,col2) 将上面提到的剩余不同的数插入a表中,这里的insert括号里是指a表的列名,全部列出来,不列出来会怎么样,还没测试过
values(b.col1,b.col2)这里需要列出的是临时表表b的所有列名
最后通过先清空临时表,再将爬取到的数插入临时表中,再将临时表中的数通过merge into 插入最终表中,成功实现用python去重插入,特此记录一下,merge into还可以进行删改操作,因为本次需求中未用到,等之后有需求再学习使用。
最近越来越发现已用促学才能更快学习掌握,至少不盲目,每天进步一点点,时间宝贵,且学且珍惜!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值