广告
返回顶部
首页 > 资讯 > 数据库 >MySql批量插入时如何不重复插入数据
  • 249
分享到

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

2024-04-02 19:04:59 249人浏览 八月长安
摘要

目录前言一、insert ignore into二、on duplicate key update三、replace into总结前言 Mysql插入不重复的数据,当大数据量的数据需

前言

Mysql插入不重复的数据,当大数据量的数据需要插入值时,要判断插入是否重复,然后再插入,那么如何提高效率?解决的办法有很多种,不同的场景解决方案也不一样,数据量很小的情况下,怎么搞都行,但是数据量很大的时候,这就不是一个简单的问题了。

一、insert ignore into

会忽略数据库中已经存在 的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过当前插入的这条数据。这样就可以保留数据库中已经存在数据,达到在间隙中插入数据的目的。

控制器方法:



@PostMapping("save")
@ResponseBody
public CommonResult<Employee> save(@RequestBody Employee employee){
    return employeeService.saveEmp(employee);
}

INSERT INTO 插入数据

<!--插入员工数据-->
<insert id="saveEmp" parameterType="com.dt.SpringBootdemo.entity.Employee">
    INSERT INTO t_employee(id, name, age, salary, department_id)
    VALUES (#{id},#{name},#{age},#{salary},#{departmentId})
</insert>

在这里插入图片描述

我们新增一条主键ID为1的员工记录。

当我再发送一次请求的时候,会报sql语句执行错误,因为主键唯一,并且ID=1的记录已经存在了。

在这里插入图片描述

加上ignore,再次添加一条ID=1的员工记录


INSERT IGNORE INTO

在这里插入图片描述

并没有报错,但是也没有添加成功,忽略了重复数据的添加。

二、on duplicate key update

当主键或者唯一键重复时,则执行update语句。


 ON DUPLICATE KEY UPDATE id = id

我们任然插入ID=1的员工记录,并且修改一下其他字段(age=25):

在这里插入图片描述

查看数据库记录:

在这里插入图片描述

可以看到并没有改变,数据也只有一条,并且返回了成功的提示。

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

扩展:这种方式还有其他业务场景的需求->>>定时更新其他字段。

我们在员工表中,再加入一个时间字段:


private Date updateTime;

在这里插入图片描述

然后我们根据updateTime字段来插入数据:


<insert id="saveEmp" parameterType="com.dt.springbootdemo.entity.Employee">
    INSERT INTO t_employee(id, name, age, salary, department_id,update_time)
    VALUES (#{id},#{name},#{age},#{salary},#{departmentId},now())
    ON DUPLICATE KEY UPDATE update_time = now()
</insert>

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

如果插入的时候需要更新其他字段(比如age),该怎么做呢?

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

三、replace into

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


REPLACE INTO

 <!--插入员工数据-->
<insert id="saveEmp" parameterType="com.dt.springbootdemo.entity.Employee">
    REPLACE INTO t_employee(id, name, age, salary, department_id,update_time)
    VALUES (#{id},#{name},#{age},#{salary},#{departmentId},now())
</insert>

在这里插入图片描述

在这里插入图片描述

总结:实际开发中,用得最多的就是第二种方式,进行的批量加。


<!--插入员工数据-->
<insert id="saveEmp" parameterType="java.util.List">
    INSERT INTO t_employee(id, name, age, salary, department_id,update_time)
    VALUES
    <foreach collection="list" item="item" index="index" separator=",">
        (#{item.id},#{item.name},#{item.age},#{item.salary},#{item.departmentId},now())
    </foreach>
    ON DUPLICATE KEY UPDATE id = id
</insert>

控制器:


@PostMapping("save")
@ResponseBody
public CommonResult<Employee> save(@RequestBody List<Employee> employeeList){
    return employeeService.saveEmp(employeeList);
}

在这里插入图片描述

如果存在相同的ID,则不会重复添加。

总结

实际工作中,使用最多的是方法二,根据不同的场景选择不同的方式使用。

到此这篇关于mysql批量插入时如何不重复插入数据的文章就介绍到这了,更多相关MySql不重复插入内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: MySql批量插入时如何不重复插入数据

本文链接: https://www.lsjlt.com/news/128796.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySql批量插入时如何不重复插入数据
    目录前言一、insert ignore into二、on duplicate key update三、replace into总结前言 Mysql插入不重复的数据,当大数据量的数据需...
    99+
    2022-11-12
  • MySQL批量插入不重复的UUID
    使用场景 有时候需要给表中已有数据填充一个字段为UUID, 比如更新所有ID等。 操作思路 先给每一条数据增加一个UUID将UUID中的-替换为空 方案一:一次性替换sql select REPLACE ( UUID( ), ...
    99+
    2023-09-05
    mysql sql 数据库
  • 关于MySQL 大批量插入时如何过滤掉重复数据
    目录一、发现问题二、删除全部重复数据,一条不留三、删除表中删除重复数据,仅保留一条四、开始删除重复数据,仅留一条前言: 加班原因是上线,解决线上数据库存在重复数据的问题,发现了程序的...
    99+
    2022-11-12
  • Mysql批量插入数据时该如何解决重复问题详解
    目录前言一、三种方法二、细节2.1、insert ignore into2.2 、insert into ... on duplicate key update2.3、replace into三、总结前言 当数据库中存量...
    99+
    2022-11-10
  • 详解MySql如何不插入重复数据
    目录1、insert ignore into2、on duplicate key update3、insert ... select ... where not exist4、replace into...
    99+
    2023-01-17
    MySql不插入重复数据 MySql重复数据
  • C# MySQL 插入大批量数据
    一、定义DataTable的数据类型 private DataTable GetDataTableFromExternalSource(string tablename) { DataTable dat...
    99+
    2023-09-08
    mysql c# 数据库
  • python批量插入数据到mysql
    使用python批量插入数据到mysql的三种方法 自动化单条insert # -*- coding:utf-8 -*-import timefrom pymysql import *# 装饰器,计算插入50000条数据需要的时间def t...
    99+
    2023-09-06
    mysql 数据库 sql
  • MySQL中怎么插入不重复数据
    这期内容当中小编将会给大家带来有关MySQL中怎么插入不重复数据,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。   之前最naive的想法就是先对将要插入的...
    99+
    2022-10-18
  • MySQL中怎么不插入重复数据
    这期内容当中小编将会给大家带来有关MySQL中怎么不插入重复数据,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、insert ignore into当插入数据时,如出现...
    99+
    2022-10-18
  • MySQL中怎么批量插入数据
    本篇文章为大家展示了MySQL中怎么批量插入数据,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.创建测试表mysql> show create table ...
    99+
    2022-10-18
  • Mysql大数据批量插入方法
    MySQL是当前最流行的关系型数据库之一,大数据批量插入是MySQL中常用的操作之一。在处理大量数据时,如果一条一条地插入会极大地影响效率,因此批量插入是一个更好的选择,可以大大提高数据的处理速度。下面介绍几种MySQL大数据批量插入的方法...
    99+
    2023-09-14
    mysql 大数据 数据库
  • MyBatis如何批量插入大量数据
    这篇文章将为大家详细讲解有关MyBatis如何批量插入大量数据,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。问题背景:只用MyBatis中foreach进行批量插入数据,一次性插入超过一千条的时候MyBa...
    99+
    2023-06-22
  • MySQL如何快速批量插入1000w条数据
    听说有个面试题是: 如何快速向mysql中插入1000w条数据? 我私下试了一下, 发现插入10000条数据用了0.9s, 插入10w条数据用了4.7s, 插入100w条数据...
    99+
    2022-11-11
  • python向mySQL批量插入数据的方
    通过调用mySQLdb python库中的 cursor.executemany()函数完成批量处理。 今天用这个函数完成了批量插入 例程: def test_insertDB():     conn = database.Connect...
    99+
    2023-01-31
    批量 数据 python
  • 大批量数据分批批量插入或更新(Mybatis+MySQL)
    大批量数据分批批量插入或更新 在MySQL数据库的前提下,插入或更新大批量数据。首先批量插入需要考虑到以下几个因素: 数据库一次可以承受多大或者多少条数据的插入批量插入是否会占用Mysql资源太久,影响系统整体使用性能代码中的集合是否会造成...
    99+
    2023-08-30
    mybatis mysql 数据库 java spring boot
  • 【mysql】向mysql数据库批量插入数据(循环)
    错误插入  delimiter $$ //以delimiter来标记用$表示存储过程结束 create procedure pre() //创建pre()存储方法 begin declare i int; //定义i变量 s...
    99+
    2021-08-13
    【mysql】向mysql数据库批量插入数据(循环)
  • MyBatis如何实现批量插入数据
    本文小编为大家详细介绍“MyBatis如何实现批量插入数据”,内容详细,步骤清晰,细节处理妥当,希望这篇“MyBatis如何实现批量插入数据”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、SQL实现示例假设我们...
    99+
    2023-07-04
  • 如何批量向表中插入数据?
    我相信对于oracle初学者来说,当遇到领导说将成千上万条的数据插入到表中的时候会很抓狂。当时我是将几十条数据插入到表中,我是insert into一句句插入进去了,执行了几十遍我就已经疯了,后来发现可以批...
    99+
    2022-10-18
  • mysql中怎么批量插入规律数据
    mysql中怎么批量插入规律数据,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Sql代码  insert into CPPRADAR( S...
    99+
    2022-10-18
  • MyBatis批量插入/修改/删除MySql数据
    前言 由于项目需要生成多条数据,并保存到数据库当中,在程序中封装了一个List集合对象,然后需要把该集合中的实体插入到数据库中,项目使用了Spring+MyBatis,所以打算使用M...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作