mysql如何插入多条数据_mysql batch insert语法示例

发布时间 - 2026-02-03 00:00:00    点击率:
MySQL多值插入最常用写法是INSERT INTO table (c1,c2) VALUES (v1,v2),(v3,v4);单语句建议≤1000行,冲突时可用INSERT IGNORE跳过或ON DUPLICATE KEY UPDATE更新,大数据量优先LOAD DATA INFILE。

MySQL INSERT INTO VALUES 多值插入最常用写法

直接在一条 INSERT INTO 语句中列出多组值,用逗号分隔,是 MySQL 原生支持、兼容性好、性能合理的批量插入方式。

常见错误是把多条 INSERT 拼成一个长语句但没加逗号,或误以为必须用 INSERT ... SELECT

  • 语法必须是:INSERT INTO table (col1, col2) VALUES (v1,v2), (v3,v4), (v5,v6);
  • 每组括号内字段数和类型必须与列定义严格一致
  • 单条语句建议不超过 1000 行(受 max_allowed_packet 和性能影响)
  • 遇到主键/唯一键冲突时,默认会中断整个语句;如需跳过冲突行,改用 INSERT IGNOREON DUPLICATE KEY UPDATE

INSERT IGNORE 和 ON DUPLICATE KEY UPDATE 的区别场景

当批量插入可能含重复主键或唯一索引值时,这两个选项决定行为走向,不能混用。

  • INSERT IGNORE:遇到重复键就跳过该行,不报错,也不更新已有数据
  • ON DUPLICATE KEY UPDATE:遇到重复键则执行指定的更新操作,比如 INSERT INTO t (id,name) VALUES (1,'a'),(2,'b') ON DUPLICATE KEY UPDATE name=VALUES(name);
  • 注意 VALUES(col) 是特殊函数,返回本次 INSERT 中对应列的值,不是字面量 VALUES
  • 若表有多个唯一索引,任一触发都会激活 ON DUPLICATE KEY UPDATE

用 LOAD DATA INFILE 替代 INSERT 的真实条件

当数据源是

本地 CSV 或文本文件,且对导入速度敏感(比如 >10 万行),LOAD DATA INFILE 比拼接 SQL 快 5–10 倍,但它不是“语法替代”,而是另一套路径。

  • 要求 MySQL 服务端能读取该文件路径(不是客户端机器),除非加 LOCAL 关键字(需服务端开启 local_infile=ON
  • 字段分隔符、行结束符、转义字符必须显式声明,例如:LOAD DATA INFILE '/tmp/data.csv' INTO TABLE t FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';
  • 不走 SQL 解析器,无法触发触发器,也不会被普通事务完全包裹(InnoDB 下仍可回滚,但机制不同)
  • 字段顺序必须与文件列顺序一致,或用 (col1,col2) 显式映射

Python / Java 等应用层批量插入的注意事项

应用代码里拼接多值 INSERT 很常见,但容易忽略连接层和数据库层的隐性限制。

  • 预处理语句(如 Python 的 executemany())底层仍是多次单条或自动打包为多值 VALUES,具体取决于驱动实现
  • MySQL 连接默认启用 autocommit=False,务必手动 commit(),否则数据不落盘
  • 大批次建议分块(如每次 1000 行),避免单次请求超 max_allowed_packet(默认 4MB)导致 Packets larger than max_allowed_packet bytes 错误
  • 如果用 ORM(如 SQLAlchemy),确认其批量方法是否真正生成多值 INSERT,有些版本会退化为循环单条
实际批量插入的瓶颈往往不在语法本身,而在事务粒度、索引维护开销、以及网络往返次数——这些比选哪条 SQL 更关键。


# mysql  # python  # java  # 大数据  # csv  # 区别  # batch  # sql  # select  # 循环  # table  # 数据库  # 跳过  # 单条  # 最常用  # 服务端  # 主键  # 也不  # 多个  # 已有  # 而在  # 这两个 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何快速搭建高效服务器建站系统?  js代码实现下拉菜单【推荐】  微信推文制作网站有哪些,怎么做微信推文,急?  Linux安全能力提升路径_长期防护思维说明【指导】  如何在宝塔面板创建新站点?  C语言设计一个闪闪的圣诞树  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  EditPlus 正则表达式 实战(3)  js实现获取鼠标当前的位置  如何在阿里云高效完成企业建站全流程?  Laravel如何实现API资源集合?(Resource Collection教程)  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  如何在建站之星绑定自定义域名?  Laravel怎么连接多个数据库_Laravel多数据库连接配置  bootstrap日历插件datetimepicker使用方法  香港服务器选型指南:免备案配置与高效建站方案解析  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  Laravel如何使用Gate和Policy进行授权?(权限控制)  在线教育网站制作平台,山西立德教育官网?  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  Laravel如何自定义错误页面(404, 500)?(代码示例)  奇安信“盘古石”团队突破 iOS 26.1 提权  如何彻底删除建站之星生成的Banner?  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  浅谈redis在项目中的应用  如何在景安云服务器上绑定域名并配置虚拟主机?  如何在Tomcat中配置并部署网站项目?  Laravel如何发送系统通知?(Notification渠道示例)  PythonWeb开发入门教程_Flask快速构建Web应用  Python文件操作最佳实践_稳定性说明【指导】  制作公司内部网站有哪些,内网如何建网站?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  轻松掌握MySQL函数中的last_insert_id()  canvas 画布在主流浏览器中的尺寸限制详细介绍  微信小程序 HTTPS报错整理常见问题及解决方案  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  如何快速搭建FTP站点实现文件共享?  Bootstrap整体框架之JavaScript插件架构  如何在香港服务器上快速搭建免备案网站?  如何快速搭建高效WAP手机网站?  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  大连网站制作公司哪家好一点,大连买房网站哪个好?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  在线制作视频网站免费,都有哪些好的动漫网站?