MySQL 批量插入:如何不插入重复数据?

【项目实战】功能安全目标有四个ASIL等级:A、B、C、D,ASIL D是最高的等级 功能安全是一种关注产品在异常情况下如何避免造成伤害的概念功能安全在汽车电子行业中非常重要。功能安全涉及到系统、电子和软件三个部分。(1)系统部分主要涉及概念设计(2)而具体的实施则是在电子和软件部分完成。 阅读详情
知识这个东西,看来真的要温故而知新,一直不用,都要忘记了????

业务很简单:需要批量插入一些数据,数据来源可能是其他数据库的表,也可能是一个外部excel的导入

那么问题来了,是不是每次插入之前都要查一遍,看看重不重复,在代码里筛选一下数据,重复的就过滤掉呢?

向大数据数据库中插入值时,还要判断插入是否重复,然后插入。如何提高效率

看来这个问题不止我一个人苦恼过。

解决的办法有很多种,不同的场景解决方案也不一样,数据量很小的情况下,怎么搞都行,但是数据量很大的时候,这就不是一个简单的问题了。

几百万的数据,不可能查出来,做去重处理

说一下我Google到的解决方案????

1、insert ignore into

当插入数据时,如出现错误时,如重复数据,将不返回错误,只以警告形式返回。所以使用ignore请确保语句本身没有问题,否则也会被忽略掉。例如:

INSERT IGNORE INTO user (name) VALUES ('telami')

这种方法很简便,但是有一种可能,就是插入不是因为重复数据报错,而是因为其他原因报错的,也同样被忽略了~

2、on duplicate key update

当primary或者unique重复时,则执行update语句,如update后为无用语句,如id=id,则同1功能相同,但错误不会被忽略掉。

例如,为了实现name重复的数据插入不报错,可使用一下语句:

INSERT INTO user (name) VALUES ('telami') ON duplicate KEY UPDATE id = id

这种方法有个前提条件,就是,需要插入的约束,需要是主键或者唯一约束(在你的业务中那个要作为唯一的判断就将那个字段设置为唯一约束也就是unique key)。

3、insert … select … where not exist

根据select的条件判断是否插入,可以不光通过primary 和unique来判断,也可通过其它条件。例如:

INSERT INTO user (name) SELECT 'telami' FROM dual WHERE NOT EXISTS (SELECT id FROM user WHERE id = 1)

这种方法其实就是使用了mysql的一个临时表的方式,但是里面使用到了子查询,效率也会有一点点影响,如果能使用上面的就不使用这个。

4、replace into

如果存在primary or unique相同的记录,则先删除掉。再插入新记录。

REPLACE INTO user SELECT 1, 'telami' FROM books

这种方法就是不管原来有没有相同的记录,都会先删除掉然后再插入。

实践

选择的是第二种方式

<insert id="batchSaveUser" parameterType="list">
        insert into user (id,username,mobile_number)
        values
        <foreach collection="list" item="item" index="index" separator=",">
            (
#{item.id},
#{item.username},
#{item.mobileNumber}
)
</foreach>
ON duplicate KEY UPDATE id = id </insert>

这里用的是Mybatis,批量插入的一个操作,mobile_number 已经加了唯一约束。这样在批量插入时,如果存在手机号相同的话,是不会再插入了的。

来源:www.telami.cn

Codex入门10-Goal自主任务(进阶必学:设定目标就不管了,AI自己干活到完成) /goal 是Codex CLI最强大的进阶功能——设定一个目标,AI就会制定计划、分步执行、自我测试、持续迭代,即使你关掉终端也会继续。本文详解/goal的工作原理、配置启用方法、常用命令(pause/resume/status/clear),以及如何写出高质量的目标描述让AI高效自主完成任务。 阅读详情

相关推荐

机器学习预测股票收益(一)之随机森林模型

机器学习预测股票收益(一)前言一、导入库和数据二、处理数据以及计算特征变量三、使用随机森林回归预测股票收益1.构建训练集和测试集2.查看预测结果四、根据预测结果构建long-short投资组合1.定义投资组合函数2.定义绩效分析函数五、引入Fama-French Factor六、投资组合表现1.超额收益表现2.多因子回归总结 前言 本文将使用Python整理1927-2020年所有美国上市公司股票数据。根据历史收益以及交易量,使用随机森林,支持向量机以及神经网络等机器学习方法预测股票收益。最优结果构建的资产

weixin_47174968的博客 1万+

MySQL 批量插入,如何不插入重复数据

如果记录被更新前后值是一样的,则受影响行数的值显示0。insert ignore into sc (name,class,score) values ('吕布','二年二班',77)在其中创建了唯一索引'name_class'('name','class'),就是说这个学生表同名同班级的学生只能由一位。replace into sc (name,class,score) values ('吕布','二年二班',77);为sc表添加一个唯一性索引'name_score'('name','score')

gaohuimina的博客 458

ARM Memory Compiler实战指南:从参数配置到GDSII生成的全流程解析

本文详细解析了ARM Memory Compiler在SRAM设计中的全流程应用,从基础参数配置到GDSII文件生成。涵盖SRAM类型选择、核心参数配置策略、高级优化技巧及TSMC 28nm工艺下的实战案例,帮助IC设计工程师高效实现存储器模块的优化设计。

game4的博客 419

避免Mysql插入重复数据的几种方法

避免mysql插入重复数据的几种方式

itbestboy的博客 4354

博途 V15.1安装步骤

温馨提醒:安装此软件电脑配置至少应满足以下要求 处理器 CoreTM i5-3320M 3.3 GHz 或相当 内存 至少8G 硬盘 300 GB SSD 显示器 15.6' 宽屏显示 (1920 x 1080) 1.双击打开【Siemens v15.1】文件夹。 2.鼠标右击【STEP 7 BasicProfess...

谢谢关注“小鱼教你模数电”,各平台同号 9万+

深入解析SerDes系统中的时钟数据恢复电路(CDR)——基于Cadence的PLL/Bang-Bang/PS-PI架构实现与仿真

本文深入解析SerDes系统中的时钟数据恢复电路(CDR),重点探讨基于Cadence平台的PLL、Bang-Bang和PS-PI三种架构的实现与仿真。通过详细的技术对比和工程实践案例,揭示CDR在高速串行通信中的关键作用,并提供TSMC 28nm工艺下的优化策略与故障排查经验,助力工程师应对10Gbps以上SerDes设计挑战。

weixin_29202687的博客 260

MySQL数据库4种方式避免重复插入数据

MySQL知识点整理MySQL数据库4种方式避免重复插入数据准备工作insert ignore intoon duplicate key updatereplace intoinsert if not exist 本篇博文是本人在多个渠道收集到的有关MySQL的零碎知识点的整理,包括但不仅限于优快云,简书,微信公众号等各种渠道。甚至有些文章无法考证原创作者。故在此标记为原创,如有侵权行为请联系:bbxylqf@126.com,本人在收到消息后会第一时间删除相应内容。 MySQL数据库4种方式避免重复插

潮汐先生的专栏 2975

Vivado实战:如何用BUFGMUX_CTRL实现FPGA双时钟热切换(附时序约束模板)

本文详细介绍了如何使用Xilinx FPGA中的BUFGMUX_CTRL原语实现双时钟热切换的工业级解决方案。通过分析BUFGMUX_CTRL的核心机制、PCB布局约束和电源噪声抑制方法,提供Vivado实现全流程和时序约束模板,帮助工程师在工业自动化、车载电子等场景中提升系统可靠性。

weixin_29186249的博客 583

MySql批量插入时,如何不插入重复的数据?

业务很简单:需要批量插入一些数据,数据来源可能是其他数据库的表,也可能是一个外部excel的导入 那么问题来了,是不是每次插入之前都要查一遍,看看重不重复,在代码里筛选一下数据,重复的就过滤掉呢? 向大数据数据库中插入值时,还要判断插入是否重复,然后插入。如何提高效率看来这个问题不止我一个人苦恼过。 解决的办法有很多种,不同的场景解决方案也不一样,数据量很小的情况下,怎么搞都行,但是数据量很大的时候,这就不是一个简单的问题了。 几百万的数据,不可能查出来,做去重处理 ...

weixin_41481323的博客 359

西门子S7-1200与汇川SV660F伺服Profinet通讯调试实战

在工业自动化领域,Profinet作为工业以太网标准协议,凭借其高实时性和灵活组网能力,已成为伺服驱动器与PLC通讯的主流选择。其核心原理是通过设备名识别、IP分配以及标准报文(如111速度报文、105定位报文)传输控制字与状态字,实现驱动器的精准控制。相比传统脉冲或CANOpen方案,Profinet直连省去了协议转换网关,降低了成本与故障点,尤其适用于绕线设备、包装机械等中小型单轴或多轴运动控制系统。本文以西门子S7-1200 PLC搭配汇川SV660F伺服为例,完整梳理了从GSDMD组态、InoDri

weixin_29184371的博客 234

流体动力学仿真软件:XFlow_(20).案例研究:声学仿真

在流体动力学仿真软件中,声学仿真是一个重要的应用领域。通过数值模拟,工程师和科研人员可以预测和分析流体系统中的声学现象,如气动噪声、声波传播和声场分布。这些仿真结果对于优化设计、降低噪声水平和提高系统性能具有重要意义。本节将详细介绍如何在流体动力学仿真软件中进行声学仿真,包括声学模型的选择、参数设置、后处理分析等内容,并通过具体的案例来说明这些步骤。

kkchenjj的博客 902

MySql批量插入:如何不插入重复数据?

MySQL 批量插入:如何不插入重复数据?使用场景1、insert ignore into2、on duplicate key update3、insert … select … where not exist4、replace into5、代码中使用线程池进行批量查询,做判断, 批量更新插入 使用场景 最近我老是遇到几万条或者几十万数据的开发, 导入数据的时候肯定是要去重的, 由于刚开始写的时候是一条条数据去查做更新处理, 结果导入数据的时候可想而知, 3万数据花了大半个小时, 客户使用感觉已太慢了, 没

myyunworld的博客 1081

线结构光相机原理详解以及精度控制总结

摘要:线阵结构光相机是工业三维检测的核心设备,结合线阵相机的高分辨率与结构光的主动三维成像能力。其工作原理基于线激光投射、逐线扫描、亚像素级条纹提取及三角测量法实现三维重建。精度受硬件、校准、环境和算法四因素影响,需通过优化硬件选型(如小像元相机、窄线宽激光)、精准校准(相机内参、激光平面)、环境控制(遮光、隔振、恒温)及算法优化(Steger算法、点云后处理)来提升。典型应用(卷材、轨道检测)中深度精度可达5-20μm,需根据场景需求平衡参数配置。

start_up_go的博客 940

我吐了!MySQL 批量插入:如何不插入重复数据呢?

知识这个东西,看来真的要温故而知新,一直不用,都要忘记了 【获取资料】 业务很简单:需要批量插入一些数据,数据来源可能是其他数据库的表,也可能是一个外部excel的导入。 那么问题来了,是不是每次插入之前都要查一遍,看看重不重复,在代码里筛选一下数据,重复的就过滤掉呢? 向大数据数据库中插入值时,还要判断插入是否重复,然后插入。如何提高效率? 看来这个问题不止我一个人苦恼过。 解决的办法有很多种,不同的场景解决方案也不一样,数据量很小的情况下,怎么搞都行,但是数据量很大的时候,这就不是一个简单的问题了。 .

公众号【Java大蜗牛】 244

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

面试官:MySQL 批量插入,如何不插入重复数据?

解决的办法有很多种,不同的场景解决方案也不一样,数据量很小的情况下,怎么搞都行,但是数据量很大的时候,这就不是一个简单的问题了。这种方法有个前提条件,就是,需要插入的约束,需要是主键或者唯一约束(在你的业务中那个要作为唯一的判断就将那个字段设置为唯一约束也就是。那么问题来了,是不是每次插入之前都要查一遍,看看重不重复,在代码里筛选一下数据,重复的就过滤掉呢?的一个临时表的方式,但是里面使用到了子查询,效率也会有一点点影响,如果能使用上面的就不使用这个。这里用的是Mybatis,批量插入的一个操作,

fuladulu的博客 200

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

明明加了唯一索引,为什么还是产生重复数据?

前言前段时间我踩过一个坑:在mysql8的一张innodb引擎的表中,加了唯一索引,但最后发现数据竟然还是重复了。到底怎么回事呢?本文通过一次踩坑经历,聊聊唯一索引,一些有意思的知识点。1.还原问题现场前段时间,为了防止商品组产生重复的数据,我专门加了一张防重表。如果大家对防重表,比较感兴趣,可以看看我的另一篇文章 《》,里面有详细的介绍。问题就出在商品组的防重表上。具体表结构如下:CREATE&nbsp;TABLE&nbsp;`product_group_unique`&nbsp;

知识分享官 361

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

MySQL 批量插入,如何不插入重复数据?根据条件 MyBatis不插入重复数据

MySQL 批量插入,如何不插入重复数据?根据条件 MyBatis不插入重复数据.这里用的是Mybatis,批量插入的一个操作,通过联合唯一索引(tenantId,projectId,editVid),已经加了唯一约束;重复数据中针对不需要或者需要修改的字段,可以通过if进行判断处理(IF(逻辑判断, 为真结果, 为假结构)。如上,这样在批量插入时,如果存在同一租户-项目-编辑版本下相同数据的话,是不会再插入了的。当然这是个非常浅显的例子,实际项目中也有很多场景,这就不再探索。

chenthe1的专栏 6494
上一篇: 一个帮你轻松搞定第三方登陆的 Java 开源组件
下一篇: 批处理框架 Spring Batch 这么强,你会用吗?
Java思维导图
博客等级 码龄10年 306粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值