我是
靠谱客的博主
洁净康乃馨,最近开发中收集的这篇文章主要介绍
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') |
执行结果如下:
执行成功之后,查看表中的数据:
调用方法二:运行存储过程
最后
以上就是洁净康乃馨为你收集整理的Mysql创建存储过程--批量插入数据的全部内容,希望文章能够帮你解决Mysql创建存储过程--批量插入数据所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复