`
yuelangyc
  • 浏览: 454964 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Mysql中批量更新的几种方式

阅读更多

        最近一直在云笔记中整理文章,看了博客发现去年一年只发了2个无关技术的文章,趁现在闲暇时间,将整理好的文章发过来,供大家参考,顺便提出宝贵意见。

 

    1、在处理大数据时,有时候会经常遇到大量的数据需要更新或插入,如何进行优化。 批量插入其实挺简单,只要用insert into 后面跟多个VALUES集合即可。

 

批量更新有两种方式,

 

    A、insert into table (aa,bb,cc) values(xx,xx,xx),(oo,oo,oo) on duplicate key update aa=values(aa),bb=values(bb),cc=values(bb)+values(cc)

 

        a、更新操作,values后可跟多条记录,主键或唯一值存在,则按最后提供的规则进行更新,规则自定义,cc=values(bb)+values(cc)

 

        b、只更新最后添加的字段,bb=values(bb)

 

        c、更新时,如果有类似create_date 不为空而且没有默认值的列,需要在key和value中添加,但最后更新的列中不一定包含此列。 ex: insert into table (aa,bb,create_date) values (xx,xx,now()) on duplicate key update aa = values(aa),bb=value(bb)

 

 

    B、replace into table (aa,bb,cc) values(xxx,xxx,xxx),(ooo,ooo,ooo),(ccc,ccc,ccc)

 

        该方式表是要有唯一主键的。原理跟A差不多。判断主键,存在即更新,不存在则插入。 如果只更新其中1、2个字段的时候,不要用这个方法,否则会将其他的字段置空,或者执行前将values值填写完整。

 

    不过该方法有个坑,对于配置有主从服务器的时候,会导致从库的自增主键与主库的自增主键无法保持一致。

        详细链接: http://blog.xupeng.me/2013/10/11/mysql-replace-into-trap/

 

 

   replace into 和insert into on duplicate key update的不同

 

         a、replace into 操作本质是对重复的记录先delete 后insert,如果更新的字段不全会将缺失的字段置为缺省值。

 

        b、insert into 则是只update重复记录,不会改变其它字段。

 

分享到:
评论
2 楼 yuelangyc 2015-07-06  
beming 写道
时间过去有点长,想请教一个问题,如果我只想批量更新,不插入有没有好的办法呢??

只更新的话, 用update语句就可以 需要之前每条记录的ID值,或者要更新数据的条件范围。
1 楼 beming 2015-07-02  
时间过去有点长,想请教一个问题,如果我只想批量更新,不插入有没有好的办法呢??

相关推荐

    Mysql Update批量更新的几种方式

    刚开始你可能会想到使用循环执行多条UPDATE语句的方式,就像以下的python程序示例: for x in xrange(10): sql = ''' UPDATE mytable SET myfield='value' WHERE other_field='other_value'; ''' 这种方法并没有...

    mysql 批量更新及效率对比

    近期,我们有了大量的 MySQL 批量更新经验,总结了 MySQL 批量更新的几种方法,并进行了性能测试,旨在找到最高效的更新语句写法。 方法一:批量 Update 批量 Update 是最原始的批量更新方法,每条记录执行一次 ...

    mysql 批量更新及效率对比.docx

    下面我们将讨论 MySQL 批量更新的几种方法,并对其性能进行对比。 方法一:批量 Update 这种方法是最原始的批量更新方法,即对每一条记录进行单独的更新操作。例如: `update test_tbl set dr='2' where id=1;` ...

    批量生成mysql中文测试数据

    通过运行这个脚本,用户可以批量生成所需的中文测试数据,并将其导入到指定的MySQL数据库表中。 2. `word.php`:此文件可能用于生成随机的中文单词或短语。在生成测试数据时,随机的中文词汇可以模拟真实世界中的...

    mysql批量修改表前缀

    在MySQL数据库管理中,表前缀是用于区分不同应用或模块的表的一种方式。它通常由一到几个字母或数字组成,例如`wp_`、`sys_`等。批量修改表前缀对于多语言网站、同一环境中部署的多个CMS实例或者在进行数据库迁移时...

    EF批量更新、批量插入、 批量删除使用的是EFUtilities,免费的操作简单,速度超级快

    这个库提供了一种简单且高效的方式来批量处理数据,避免了频繁的数据库往返,从而显著提升了处理速度。 批量插入是EFUtilities的核心功能之一。在常规的EF操作中,如果需要将大量数据插入数据库,可能需要多次调用`...

    java 下执行mysql 批量插入的几种方法及用时

    在Java中,执行MySQL批量插入数据有多种方法,每种方法在性能上都有所不同。以下是对这些方法的详细分析: 方法1:单条插入 这是最基础的插入方式,每次循环都创建一个新的SQL语句并执行。这种方法的效率最低,因为...

    mybatis执行批量更新batch update 的方法(oracle,mysql两种)

    在MyBatis中,批量更新(batch update)是一种提高数据库操作效率的重要手段,尤其是在处理大量数据更新时。这里我们将详细探讨如何在Oracle和MySQL数据库中使用MyBatis进行批量更新。 1. **Oracle数据库的批量更新...

    批量删除MySQL数据库相同前缀的数据表 1.0.rar

    本话题聚焦于批量删除MySQL数据库中具有相同前缀的数据表,这在进行数据库重构、测试环境清理或旧数据淘汰时非常实用。"批量删除MySQL数据库相同前缀的数据表 1.0.rar" 是一个针对此需求的工具,它简化了手动逐个...

    mysql批量执行sql文件的方法

    4. Mysql命令行中执行sql的几种方式总结 通过这些方法,你可以更有效地管理和维护你的MySQL数据库,提高工作效率。记住,正确地组织和执行SQL脚本对于保持数据库的整洁和一致性至关重要。在实际应用中,根据具体...

    mysql中将一个表数据批量导入另一表.rar

    批量导入数据的方法有很多种,以下是几种常见的方法: 1. **使用INSERT INTO SELECT语句**: 这是直接在SQL查询中完成数据导入的最简单方式。例如: ```sql INSERT INTO target_table (column1, column2, ...) ...

    Mybatis与JDBC批量插入MySQL数据库性能测试

    在数据库操作中,批量插入(Batch Insert)是一种提高性能的有效方式,尤其是在处理大量数据时。本文将探讨Mybatis和JDBC在批量插入MySQL数据库时的性能差异,并提供相关的测试资源。 首先,JDBC(Java Database ...

    mysql-oracle数据同步

    对于“mysql-oracle数据同步”这个主题,我们可以采用以下几种方法: 1. **使用ETL工具**:Extract, Transform, Load(ETL)工具如Informatica、Talend或Kettle(Pentaho Data Integration),它们提供图形化界面,...

    MySQL 8.0 参考手册教程pdf

    加载数据到表中通常有几种方法,如`INSERT INTO`用于插入单行数据,`LOAD DATA INFILE`用于快速批量导入数据,或者使用`SELECT ... INTO OUTFILE`将查询结果导出到文件,然后用`LOAD DATA INFILE`导入。 检索表中的...

    c#几种数据库的大数据批量插入(SqlServer、Oracle、SQLite和MySql)

    4. **MySQL批量插入** MySQL支持在单个INSERT语句中插入多行数据。你可以构建一个带有多个VALUES子句的INSERT语句,如下所示: ```csharp StringBuilder sql = new StringBuilder(); sql.Append("INSERT INTO ...

    c#实现几种数据库的大数据批量插入

    在C#中,进行大数据批量插入到不同的数据库如SQL Server、Oracle、SQLite和MySQL是常见的需求,这可以显著提高数据处理效率。以下将详细介绍如何在这些数据库中实现批量插入。 首先,我们关注C#中一个关键接口`...

    mybatis中批量插入的两种方式(高效插入)

    本文将深入探讨MyBatis中实现批量插入的两种高效方式。 ### 1. MyBatis `foreach` 标签 `foreach` 是MyBatis中用于在SQL语句中迭代集合的标签,特别适合构建`IN`条件。`foreach` 元素的属性包括: - `item`: 集合...

    C#.NET中如何批量插入大量数据到数据库中

    批量插入数据库时,有几种方法可以提高效率: 1. **使用SQL事务**:将多个插入操作封装在一个事务中,可以减少与数据库的交互次数,提高性能。在C#.NET中,可以使用`SqlConnection`的`BeginTransaction`、`Commit`...

    MySQL批量SQL插入性能优化详解

    MySQL批量SQL插入性能优化是数据库管理员和开发人员面临的重要任务,特别是在处理大数据量的系统时。本文将深入探讨几种能够显著提升MySQL InnoDB存储引擎插入性能的方法。 首先,一种有效的优化策略是通过合并多条...

Global site tag (gtag.js) - Google Analytics