0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MySQL 批量插入不重复数据的解决方法

Android编程精选 来源:JAVA葵花宝典 作者:JAVA葵花宝典 2021-07-02 15:28 次阅读

来源丨JAVA葵花宝典

知识这个东西,看来真的要温故而知新,一直不用,都要忘记了

业务很简单:需要批量插入一些数据,数据来源可能是其他数据库的表,也可能是一个外部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

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

实践

选择的是第二种方式

pYYBAGDewGiAD4ryAAAloA9QPzg560.png

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

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据库
    +关注

    关注

    7

    文章

    3591

    浏览量

    63365
  • 大数据
    +关注

    关注

    64

    文章

    8649

    浏览量

    136587

原文标题:MySQL 批量插入:如何不插入重复数据?

文章出处:【微信号:AndroidPush,微信公众号:Android编程精选】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    导致MySQL索引失效的情况以及相应的解决方法

    导致MySQL索引失效的情况以及相应的解决方法  MySQL索引的目的是提高查询效率,但有些情况下索引可能会失效,导致查询变慢或效果不如预期。下面将详细介绍导致MySQL索引失效的情况
    的头像 发表于 12-28 10:01 304次阅读

    mysql备份还原哪些方法

    MySQL是一个开源的关系型数据库管理系统,备份和还原是保证数据安全性和可恢复性的重要措施。本文将详细介绍MySQL备份和还原的方法,包括物
    的头像 发表于 11-23 14:35 658次阅读

    mysql数据库备份与还原

    MySQL是一种常见的关系型数据库管理系统,用于存储和管理数据。备份和还原数据库是非常重要的操作,可以保护数据免受丢失或损坏的影响。本文将详
    的头像 发表于 11-23 14:32 734次阅读

    MySQL性能优化方法

    MySQL 性能优化是一项关键的任务,可以提高数据库的运行速度和效率。以下是一些优化方法,包括具体代码和详细优化方案。
    的头像 发表于 11-22 09:59 266次阅读

    python去除list中重复数据

    Python是一个强大的编程语言,提供了许多解决问题的方法和功能。其中一个常见的问题是如何去除列表中的重复数据。在本文中,我们将详细介绍Python中去除列表中重复数据的几种方法,包括
    的头像 发表于 11-21 15:49 366次阅读

    python处理重复值的方法

    处理重复值是数据处理中常见的任务之一。在Python中,有几种有效的方法可以处理重复值,包括使用集合、字典和pandas库等。 使用集合 集合数据
    的头像 发表于 11-21 15:47 567次阅读

    MySQL数据库基础知识

    MySQL 是一种开源的关系型数据库管理系统,它是目前最流行的数据库之一。MySQL 提供了一种结构化的方法来管理大量的
    的头像 发表于 11-21 11:09 564次阅读

    mysql数据库增删改查基本语句

    MySQL是一种关系型数据库管理系统,提供了丰富的功能和语法,来支持数据的增删改查。在本文中,将详细介绍MySQL数据库的增、删、改、查基本
    的头像 发表于 11-16 16:36 527次阅读

    mysql数据库的增删改查sql语句

    改查SQL语句,以帮助读者全面了解MySQL的基本操作。 一、增加数据MySQL数据库中,我们可以使用INSERT语句来向表中插入新的
    的头像 发表于 11-16 15:41 583次阅读

    mysql增删改查语句以及常用方法

    MySQL是一种热门的关系型数据库管理系统,广泛用于各种Web应用程序和企业级应用程序中。本文将详细介绍MySQL中的增删改查语句以及常用方法。 一、增加
    的头像 发表于 11-16 15:36 603次阅读

    mysql是一个什么类型的数据

    强、易于使用和管理。在本文中,我们将详尽、详实、细致地介绍MySQL的功能、优势、架构、语法等方面。 一、MySQL的功能: 数据库管理:MySQL具备创建和管理
    的头像 发表于 11-16 14:43 783次阅读

    mysql主从复制数据不一致怎么办

    不一致的原因和解决方法。 一、MySQL主从复制数据不一致的原因 网络延迟:主从之间的网络延迟导致从库在主库执行完并提交的操作之前拉取到的binlog可能不是最新的,从而导致数据不一致
    的头像 发表于 11-16 14:35 868次阅读

    有没有mcu远程读写服务器上mysql数据方法

    有没有mcu通过控制wifi芯片远程读写服务器上mysql数据库?相应的mcu和wifi模块的数据手册及控制方法
    发表于 09-28 06:02

    重复数据删除解决方案

    电子发烧友网站提供《重复数据删除解决方案.pdf》资料免费下载
    发表于 09-13 11:42 0次下载
    <b class='flag-5'>重复数据</b>删除解决方案

    MySQL数据库管理与应用

    MySQL数据库管理与应用 MySQL是一种广泛使用的关系型数据库管理系统,被认为是最流行和最常见的开源数据库之一。它可以被用于多种不同的应
    的头像 发表于 08-28 17:15 656次阅读