ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

MySQL--批量插入一百万条数据

MySQL--批量插入一百万条数据 原文网址MySQL--批量插入一百万条数据-CSDN博客简介本文介绍向MySQL批量插入一百万条数据的方法。表结构CREATE TABLE t_goods ( id bigint NOT NULL COMMENT 主键, name varchar(64) COLLATE utf8mb4_bin DEFAULT NULL COMMENT 商品名字, description varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT 商品描述, unit_price decimal(10,2) DEFAULT NULL COMMENT 商品单价, stock_quantity int DEFAULT NULL COMMENT 库存数量, create_time datetime NOT NULL COMMENT 创建时间, update_time datetime NOT NULL COMMENT 修改时间, create_id varchar(32) COLLATE utf8mb4_bin DEFAULT NULL COMMENT 创建人ID, create_name varchar(32) COLLATE utf8mb4_bin DEFAULT NULL COMMENT 创建人名字, update_id varchar(32) COLLATE utf8mb4_bin DEFAULT NULL COMMENT 修改人ID, update_name varchar(32) COLLATE utf8mb4_bin DEFAULT NULL COMMENT 修改人名字, delete_flag bigint NOT NULL DEFAULT 0 COMMENT 删除标记。0未删除其他已删除, PRIMARY KEY (id) USING BTREE ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_bin COMMENT商品管理;法1存储过程# 选定数据库 use qingzhou; # 删除原有存储过程 DROP PROCEDURE if EXISTS BatchInsert; # 声明存储过程的结束符号为$$ delimiter $$ # 创建存储过程。参数0起始id参数1循环次数 CREATE PROCEDURE BatchInsert(IN initId INT, IN loopCount INT) BEGIN DECLARE tmpI INT; DECLARE tmpId INT; SET tmpI 0; SET tmpId initId; # 关闭自动提交事务提高插入效率 set autocommit0; WHILE tmpI loopCount DO INSERT INTO qingzhou.t_goods(id, name, description, unit_price, stock_quantity, create_time, update_time, create_id, create_name, update_id, update_name, delete_flag) VALUES (tmpId, (CONCAT(鼠标, tmpId)), 蓝牙鼠标, 10.00, 200, 2024-07-12 08:55:10, 2024-07-12 08:55:46, NULL, NULL, NULL, NULL, 0); SET tmpId tmpId 1; SET tmpI tmpI 1; END WHILE; COMMIT; END$$; # 结束符恢复为默认的分号 delimiter ; -- 界定符复原为默认的分号 # 调用存储过程 CALL BatchInsert(1, 1000000); # 删除存储过程 DROP PROCEDURE if EXISTS BatchInsert;我用的Windows本机的MySQL用Navicat执行此存储过程用了79秒。执行时右下角的“查询时间”一直在增加直到结束才停止。法2用代码用MyBatis-Plus的saveBatch。它内部会进行拆分每1000条数据插入一次
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表