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

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

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

步骤一:表结构,如下:

ada327caca8386a2a8513c6b79004552.png

步骤二:编写存储过程:

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

643095ca88832b9beba70757c1de4cac.png

-- 如果需要存储过程已存在,则可以先执行删除存储过程操作

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

bc545d7dd6b3dcfed44d8c4440a9e87b.png

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

643095ca88832b9beba70757c1de4cac.png

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

调用方法一:使用脚本

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

执行结果如下:

0fdf62b09e0e47cf0322b90d95ec51d6.png

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

3a9957748b1a59436a1e560955b7df6c.png

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

f290eb9ee31dc3d52685950c95bf9a59.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值