oracle表数据批量更新或插入

因为最近项目有资料需要 插入,但是原有表中可能已经有这个账户,但是没有资料,如果原表没有,则需要插入。

所以也是网上查了一堆资料,

MERGE INTO NEWLOCAL_MOBILECARD t1
USING  LOCAL_MOBILECARD_TEST t2
ON ( t1.mchtid=t2.mchtid and t1.cardno=t2.cardno)
WHEN MATCHED THEN
  UPDATE SET t1.name = t2.name,t1.certid=t2.certid
  t1.MOBILE = t2.MOBILE,t1.type = t2.type,
  t1.accounttype = t2.type
WHEN NOT MATCHED THEN
  INSERT (ID,cardno,bankid,name,certid,createtime,
 mchtid,mobile,type,accounttype) VALUES(seq_membercard.nextval,
 t2.cardno,t2.bankid,t2.name,t2.certid,t2.createtime,t2.mchtid,t2.MOBILE,t2.type,t2.accounttype);


导入数据是excel文件,我是讲excel转换为csv文件,然后倒入一张表结构一样的测试表中,

执行这个sql语句,是将测试表的数据与导入目的表的数据的mchtid进行判断是不是相等,相等则原表存在,则更新update set 设置的字段,

如果不存在则id自增长插入数据。

WHEN MATCHED THEN
  UPDATE SET t1.name = t2.name,t1.certid=t2.certid
  t1.MOBILE = t2.MOBILE,t1.type = t2.type,
  t1.accounttype = t2.type
这里可以再加上条件语句where t1.createtime >to_date('2012-12-01','yyyy-MM-dd') 之类的条件


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值