MySQL中最常用高效的多条数据插入方式是单条INSERT语句配合多组VALUES,如INSERT INTO users (name,age,city) VALUES('张三',25,'北京'),('李四',30,'上海');字段顺序须一致,NULL或DEFAULT需显式写出,单次建议≤1000行并配合事务提升性能。
MySQL 中一次插入多条数据,最常用也最高效的方式就是用单条 INSERT 语句配合多组值,也就是批量插入(Bulk Insert)。
核心写法是:在 VALUES 后面跟上多个用逗号分隔的括号,每个括号内是一行数据的字段值。
示例:
INSERT INTO users (name, age, city) VALUES这样一条语句就插入了 4 行数据,比执行 4 次单条 INSERT 快得多,也减少了网络往返和事务开销。
INSERT INTO ... (col1, col2, col3) 中声明的列顺序。
成 (NULL, 26, '杭州');如果想用默认值(如设置了 DEFAULT CURRENT_TIMESTAMP),可写 (DEFAULT, 26, '杭州')。max_allowed_packet 限制(默认一般 4MB)。建议单次控制在 1000 行以内,更稳妥可分 500 行一批。BEGIN,再批量插入,最后 COMMIT,能显著减少日志刷盘次数。从另一张表导入数据:可用 INSERT ... SELECT
忽略重复或替换已有记录:
INSERT IGNORE 跳过主键/唯一键冲突的行;REPLACE INTO 先删后插(慎用,会触发删除动作);INSERT ... ON DUPLICATE KEY UPDATE 实现“存在则更新,不存在则插入”。代码里动态生成多值时,注意:
executemany()、Java 的 PreparedStatement.addBatch());? 或 %s),避免 SQL 注入和类型错误。