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

我去

后悔了,一千萬有點太多了


免責聲明!

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



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