Mysql创建存储过程--批量插入数据

需求:批量插入上万条数据,要求created_at(创建时间)为依次递增的数据,其他字段不做限制

实现上述需求,可以通过文件的形式或者创建存储过程的方式实现,小编今天就以写一个简单的存储过程来实现该需求:


 步骤一:表结构,如下:



 步骤二:编写存储过程:


 1)检查库中函数下是否已存在同名的存储过程,如果存在,则需要执行删除存储过程的操作

-- 如果需要存储过程已存在,则可以先执行删除存储过程操作
DROP PROCEDURE
IF
EXISTS `proc_auto_insertdata2`;

2)新建一个查询,运行创建存储过程的脚本:

CREATE  PROCEDURE `proc_auto_insertdata2`(
IN record INTEGER, -- record参数用来传需要插入数据的条数
IN dt timestamp -- dt参数用来传入时间戳,开始插入的第一条数据的时间(格式为:'2020-10-24 14:31:44')
)
BEGIN
DECLARE number INTEGER ; -- 声明一个number,用来控制循环的次数
set number=1; -- 将number的值赋值为1,代表循环从1开始
START TRANSACTION;
WHILE number <=record DO -- 使用while进行循环,满足条件进入循环
select date_add(dt, interval 1 second) into dt;-- 使用date_add()函数将时间进行转换为秒数,并赋值给dt参数
-- 插入数据
INSERT INTO
school.auction_records -- 库名.表名
-- 由于id是自动增长,不需要额外赋值,所以需要将剩余的其他字段全部列出进行一一对应赋值插入
(pool_id,
auctionable_id,
auctionable_type,
auction_prize_id,
prize_id,
coin,
status,
created_at,
updated_at)
VALUES(
1,
2,
'participator',
13,
1,
2,
2,
dt,
dt);
-- number参数进行自增
set number =number+1;
-- dt参数进行自增
set dt = date_add(dt, interval 1 second);
end WHILE;
COMMIT;
END

 创建成功之后,在库的函数下进行刷新,则可以看到新建的存储过程:


 步骤三:用存储过程进行批量插入数据:


 调用方法一:使用脚本

call proc_auto_insertdata2(20,'2020-10-24 14:31:44')

执行结果如下:

执行成功之后,查看表中的数据:

 调用方法二:运行存储过程

原文地址:https://www.cnblogs.com/smilecindy/p/14008692.html