mysql自定义函数并在存储过程中调用,生成一千万条数据

mysql 自定义函数,生成 n 个字符长度的随机字符串

-- sql function

delimiter $$
create function rand_str(n int) returns VARCHAR(255)
BEGIN

declare str VARCHAR(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSQUVWXYZ';
declare i int DEFAULT 0;
declare res_str VARCHAR(255) default '';

while i < n do
set res_str = concat(res_str,substr(str,FLOOR(rand()*52+1),1));
set i = i + 1;
end while;
return res_str;

end$$
delimiter ;

写好之后,运行一下,运行成功后,可以在函数下看到刚刚自定义的函数

1387811-20180802171305317-101145084.png

然后,调用一下

SELECT rand_str(3);  -- 生成3个字符的随机字母

1387811-20180802171356653-698743149.png

写一个存储过程,

实现功能:insert_emp2(2,10) 从2开始,插入10条数据

delimiter $$
create procedure insert_emp2(in startNum int ,in max_num int)
BEGIN
-- 声明一个变量记录当前是第几条
declare i int DEFAULT 0;

--  默认情况下是自动提交sql
set autocommit = 0; -- 禁止自动提交sql


-- 循环
repeat 

set i = i + 1;
-- 插入数据   id 增加, name 随机,年龄随机
insert into emp2 values (startNum + i,rand_str(5),floor(10+rand()*30));

until i = max_num 
end repeat ;

commit; -- 待循环完毕后再进行提交,即整体提交整体的 sql,这样可以提高效率,否则循环里会一次一次的去提交sql,数据多了会很慢。

end$$
delimiter$$

然后,调用 存储过程:

call insert_emp2(100,10000000);  --插入一千万条数据进去   

等几分钟

。。。。

好久啊

这么久来 还没创建好

我的天呐

。。。。。

hello

我去

后悔了,一千万有点太多了

转载于:https://www.cnblogs.com/friday69/p/9408389.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值