大数据量插入更新方案

流程图

![在这里插入图片描述](https://img-blog.csdnimg.cn/20181126172716994.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMTAyMTc4,size_16,color_FFFFFF,t_70
原始表:

CREATE TABLE PRODUCTS (
PRODUCT_ID VARCHAR(50) PRIMARY KEY,
PRODUCT_NAME VARCHAR(100),
category VARCHAR(100)
 )ENGINE=InnoDB;
 
INSERT INTO PRODUCTS VALUES ('1','空调','电器');
INSERT INTO PRODUCTS VALUES ('2','JAVA','书籍');

临时表:

CREATE TABLE NEWPRODUCTS (
PRODUCT_ID VARCHAR(50) PRIMARY KEY,
PRODUCT_NAME VARCHAR(100),
category VARCHAR(100)
 )ENGINE=InnoDB;
 
INSERT INTO NEWPRODUCTS VALUES ('1','冰箱','电器');
INSERT INTO NEWPRODUCTS VALUES ('3','C++','书籍');

mysql:

insert into products  
select * from newproducts 
on duplicate key update product_name=values(product_name),category=VALUES(category)
<insert id="insertOrUpdate" parameterType="java.util.List">
        INSERT INTO class_info (class_name,class_num,school_num,teacher_num,update_date,deleted,source)
        values
        <foreach collection="list" item="item"  separator=",">
            (#{item.className} ,#{item.classNum} ,#{item.schoolNum},#{item.teacherNum} ,#{item.updateDate} ,#{item.deleted},#{item.source})
        </foreach>
        ON DUPLICATE KEY UPDATE class_name=values(class_name),class_num=values(class_num),
        school_num=values(school_num),teacher_num=values(teacher_num),update_date=values(update_date),deleted=values(deleted),source=values(source)
</insert>

关键字: on duplicate key update
规则:如果你插入的记录导致一个UNIQUE索引或者primary key(主键)出现重复,那么就会认为该条记录存在,执行update语句而不是insert语句,反之,则执行insert语句
注意:必须有主键或者唯一索引

oracle参考链接: 点击.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值