为了账号安全,请及时绑定邮箱和手机立即绑定

利用procedure批量插入数据

标签:
MySQL

正文

  要求在页面查询到5000条数据,为了方便插入,准备用shell脚本写curl命令调用自己写的代码接口,但是速度慢,而且写的时候遇到点儿小问题,故用sql语句写了这个功能
  由于operationlog表中的ts字段为13位的时间戳,所以采用了截取的方式。

DROP TABLE IF EXISTS `operationlog`;
CREATE TABLE `operationlog` (
  `sn` int(11) NOT NULL AUTO_INCREMENT,
  `opl` varchar(8) NOT NULL,
  `src` varchar(32) NOT NULL,
  `pid` varchar(32) DEFAULT NULL,
  `ts` varchar(13) NOT NULL,
  PRIMARY KEY (`sn`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

drop procedure if exists batchAdd;

/*count1 循环次数 opl和src为operationlog的列*/
create procedure batchAdd(in count1 int,in opl varchar(32),in src varchar(32))
begin
	declare a int;
	set a=0;
	while a<count1 do
		begin
			/*延时1s*/
			select sleep(1);
			/*获取时间戳1523285555.207000,后面3位是0,现在的需求是ts为13位,即带ms的*/
			select @time1:=unix_timestamp(now(3));
			/*将1523285555.207000的.去掉*/
			select @time1:=replace(@time1, '.', '');
			/*取1523285555207000左边13位*/
			select @time1:=left(@time1, 13);
			/*生成sql,进行insert*/
			insert into operationlog(opl, src, pid, ts) values(opl, src, '1111', @time1);
			/*a加1*/
			set a = a + 1;
		end;

	end while;
end;

--查看procedure
show procedure status;

--调用该procedure
call batchAdd(10, 'INFO', 'AJG');

--删除procedure
drop procedure batchAdd;

create procedure batchAdd如图所示:

batchAdd_procedure

创建好procedure后,可以通过call batchAdd(10, ‘INFO’, ‘AJG’);来调用,如下图所示:

call_batchAdd


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
5
获赞与收藏
23

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消