MariaDB(MySql)使用储存过程和随机函数插入10万条数据

时间:2022-09-20 23:28:20
#定义一个表
create
table demo (id int , name varchar(100))default charset =utf8; #定义一个随机切割字符串的函数 delimiter // create function randStr() returns varchar(50) begin declare str varchar(30) default 'ASDFGHJKLZXCVBNMQWERTYUIOP'; return (substr(str,floor(1 + rand() * 26))); end // delimiter ; #查看自定义函数的返回值 select randStr();

#定义一个随机字符串的函数,int varchar int+varchar类型
# randStr(3,1) --> 返回 3 个 长度的字符的varhcar类型
#判断 此函数存在不存在,存在删除。
drop
function if exists randStr;
#定义 语句 结束符 delimiter
// create function randStr(size int, type int )
#返回值的类型
returns varchar(50) begin declare i int default 0; # 循环的步数 declare str varchar(30) default 'ASDFGHJKLZXCVBNMQWERTYUIOP';#字符类型 declare num int default '1234567890'; #整数类型 declare str_num varchar(40) default ''; declare return_str varchar(255) default ''; #用一个变量 保存 将要返回的值
 #判断 type 的 传递进来的数值,给 str_num 赋值
set str_num = case type when 1 then str when 2 then num    else concat(str,num) end ;
 #循环截取内容
while i<size do   set i = i+1; set return_str = concat( return_str, substring(str_num, floor(length(str_num) * rand() + 1), 1) ); end while;
 #返回值  
return ( return_str ); end // delimiter ;

#插入100000条数据 
delimiter //
create procedure insert_data(num int) begin
    declare i int default 1 ; set autocommit = 0; #将事物关闭 while i<=num do set i =i+1; insert into demo values (i,concat(i,randStr())); end while; commit ; end // delimiter ; #调用存储过程 call insert_data(100000);