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 ;

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

然后,调用一下

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

写一个存储过程,

实现功能: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

我去

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

posted @ 2018-08-02 17:15  郭东东郭  阅读(4343)  评论(1编辑  收藏  举报