您的位置:首页 > 数据库 > MySQL

mysql妙用:批量插入记录,遇到重复记录则为自动更新

2016-08-16 17:24 591 查看
摘要
在更新大量数据时如果每条更新执行一次sql性能很低,也容易造成阻塞;批量更新时又有可能遇到主键重复的问题

在更新大量数据时可能同时遇到两个问题:

1、如果每条更新执行一次sql性能很低,也容易造成阻塞;

2、批量更新时又有可能遇到主键重复的问题

3、jdbc.url=jdbc:mysql://ip/库名?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&allowMultiQueries=true

使用 ON DUPLICATE KEY UPDATE 一条sql解决批量更新和主键重复问题(id为主键)

<insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="true">

INSERT INTO t_cloud_vcard
(account_id,BEGIN,END,NAME,PROFILE,SOURCE,FN,N,NICKNAME,PHOTO,BDAY,ADR,LABEL,TEL,EMAIL,MAILER,TZ,GEO,TITLE,ROLE,LOGO,
AGENT,ORG,CATEGORIES,NOTE,PRODID,REV,SORT_STRING,SOUND,UID,URL,VERSION,CLASS,XTENDED,IMPP,create_time)
VALUES
<foreach collection="list" item="item" index="index" separator=",">
(#{item.accountId},#{item.BEGIN},#{item.END},#{item.NAME},#{item.PROFILE},#{item.SOURCE},#{item.FN},#{item.N},#{item.NICKNAME},
#{item.PHOTO},#{item.BDAY},#{item.ADR},#{item.LABEL},#{item.TEL},#{item.EMAIL},
#{item.MAILER},#{item.TZ},#{item.GEO},#{item.TITLE},#{item.ROLE},#{item.LOGO},#{item.AGENT},#{item.ORG},#{item.CATEGORIES},#{item.NOTE},
#{item.PRODID},#{item.REV},#{item.SORT_STRING},#{item.SOUND},
#{item.UID},#{item.URL},#{item.VERSION},#{item.CLASS},#{item.XTENDED},#{item.IMPP},now())
</foreach>
ON DUPLICATE KEY UPDATE TEL=VALUES(TEL),EMAIL=VALUES(EMAIL),XTENDED=VALUES(XTENDED),PHOTO=VALUES(PHOTO)
</insert>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: