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')

执行结果如下:

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

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

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值