Mysql-存储函数-批量插入数据
1千万数据插入数据库大概也就几分钟
-- --------------------------------删除存储函数 -------------------------------- --
drop procedure if exists cm_basedb.loop_insert_insert_table_data;
-- --------------------------------创建存储函数 -------------------------------- --
DELIMITER $$
create procedure cm_basedb.loop_insert_insert_table_data(loopTimes int)
lable1:begin
-- 若flag标识为0则继续循环,若flag标识为1则结束while循环
declare flag int unsigned default 0;
-- 禁止自动提交(放在声明变量之后)
set autocommit=0;
-- 循环次数初始化
if(loopTimes=0) then
set loopTimes=1;
end if;
-- 开始while循环
while 0=flag do
if(loopTimes>1) then
set loopTimes=loopTimes-1;
else
set flag=1;
end if;
-- execute sql start--
INSERT INTO cm_basedb.t_share_unit (share_unit, share_unit_name) VALUES(loopTimes, '1');
-- execute sql end--
end while;
-- 提交执行任务
commit;
end lable1 $$
DELIMITER ;
-- --------------------------------调用存储函数插入数据开始 -------------------------------- --
call cm_basedb.loop_insert_insert_table_data(10000000);
-- 删除存储函数
drop procedure if exists loop_insert_insert_table_data;
-- 显示表结构
show create table cm_basedb.t_share_unit;
-- 清空表
truncate table cm_basedb.t_share_unit;
-- 查询数据
select * from cm_basedb.t_share_unit;
-- 查询第一条数据
select * from cm_basedb.t_share_unit order by id asc limit 1;
-- 查询最后一条数据
select * from cm_basedb.t_share_unit order by id desc limit 1;
-- 查询数量
select count(1) from cm_basedb.t_share_unit;
-- 显示执行线程
show processlist;
-- 强制关闭进程(kill id)
kill 6;