研究MariaDB, 需要mock up一些假數據:
生成n個長度整型數的函數rand_num:
CREATE DEFINER=`root`@`localhost` FUNCTION `rand_num`(n INT) RETURNS int(5) begin DECLARE i INT DEFAULT 0; DECLARE result INT DEFAULT 0; WHILE i < n DOSET result = result*10 + FLOOR(RAND()*10); SET i = i +1;END WHILE; RETURN result; end
生成n個長度字符串的函數rand_string:
CREATE DEFINER=`root`@`localhost` FUNCTION `rand_string`(n INT) RETURNS varchar(255) CHARSET latin1 BEGINDECLARE chars_str varchar(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';DECLARE return_str varchar(255) DEFAULT '';DECLARE i INT DEFAULT 0;WHILE i < n DOSET return_str = concat(return_str,substring(chars_str , FLOOR(1 + RAND()*62 ),1));SET i = i +1;END WHILE;RETURN return_str; END
往表里批量插入數據的存儲過程:
CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_users`(IN countNum INT(10)) BEGIN DECLARE i INT DEFAULT 0; SET autocommit = 0;/*把自動提交設為0*/ REPEAT SET i = i +1; INSERT INTO users(ID,DELETED) VALUES(rand_string(36), rand_num(1)); UNTIL i=countNum END REPEAT; COMMIT; end
最后調用存儲過程:? 批量插入10條數據
CALL? ?insert_users(10)