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


相关推荐: Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  如何用AWS免费套餐快速搭建高效网站?  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  Laravel如何实现API资源集合?(Resource Collection教程)  如何快速配置高效服务器建站软件?  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  5种Android数据存储方式汇总  香港服务器WordPress建站指南:SEO优化与高效部署策略  怎样使用JSON进行数据交换_它有什么限制  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  JS实现鼠标移上去显示图片或微信二维码  Laravel如何使用.env文件管理环境变量?(最佳实践)  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  Laravel模型事件有哪些_Laravel Model Event生命周期详解  如何在景安服务器上快速搭建个人网站?  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  Bootstrap整体框架之JavaScript插件架构  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  网站制作企业,网站的banner和导航栏是指什么?  如何用花生壳三步快速搭建专属网站?  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  Laravel如何使用Gate和Policy进行授权?(权限控制)  如何快速搭建高效服务器建站系统?  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  如何在 React 中条件性地遍历数组并渲染元素  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  如何在阿里云购买域名并搭建网站?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  如何在IIS服务器上快速部署高效网站?  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  如何在阿里云通过域名搭建网站?  创业网站制作流程,创业网站可靠吗?  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  韩国服务器如何优化跨境访问实现高效连接?  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  Linux系统命令中tree命令详解  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?