因为最近项目有资料需要 插入,但是原有表中可能已经有这个账户,但是没有资料,如果原表没有,则需要插入。
所以也是网上查了一堆资料,
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') 之类的条件