Mysql 存儲過程 插入100W條數據


drop procedure insert_rand_tkt_num_01;
-- 插入100W條數據
delimiter $$
create procedure insert_rand_tkt_num_01(vv_num INT ) -- vv_num 需生成的隨機數條數
begin
declare i int default 0;
declare count int default 0;

/insert ignore into 有就不插入,沒有就插入/
set @exesql = concat("insert ignore into rand_tkt_num(number_id) values ");
set @exedata = "";

set i =0, count =0;
WHILE count< vv_num DO
set @exedata = concat(@exedata, ",(CEILING(RAND()*9000000 + FLOOR(1 + (RAND() * 5)) * 10000000))");
set count=count+1;
set i=i+1;

/1000條數據組合在一起/
if i%1000=0
then
set @exedata = SUBSTRING(@exedata, 2);
set @exesql = concat("insert ignore into rand_tkt_num(number_id) values ", @exedata);
prepare stmt from @exesql;
execute stmt;
DEALLOCATE prepare stmt;
set @exedata = "";

end if;

end WHILE;

if length(@exedata)>0 then
set @exedata = SUBSTRING(@exedata, 2);
set @exesql = concat("insert ignore into rand_tkt_num(number_id) values ", @exedata);
/* set @exesql = concat("select "", @exesql, "" from dual"); */
prepare stmt from @exesql;
execute stmt;
DEALLOCATE prepare stmt;
end if;
commit;
end $$


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM