Mysql利用儲存過程插入100萬條測試資料
阿新 • • 發佈:2020-12-23
1、建立student表
CREATE TABLE `student` ( `sno` int(11) NOT NULL AUTO_INCREMENT, `sname` varchar(40) NOT NULL, `ssex` char(10) DEFAULT '男', `sage` int(11) DEFAULT NULL, `scollege` varchar(50) DEFAULT NULL, `telephone` varchar(11) DEFAULT NULL, PRIMARY KEY (`sno`), UNIQUE KEY `telephone` (`telephone`) ) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8;
2、建立函式和儲存過程
--name_rand函式-- CREATE FUNCTION `name_rand`(n INT) RETURNS varchar(255) CHARSET latin1 BEGIN DECLARE chars_str varchar(100) DEFAULT 'abcdefghij0123456789'; DECLARE return_str varchar(255) DEFAULT '' ; DECLARE i INT DEFAULT 0; WHILE i < n DO SET return_str = concat(return_str,substring(chars_str , FLOOR(1 + RAND()*10 ),1)); SET i = i +1; END WHILE; RETURN return_str; END --tel_rand函式-- CREATE FUNCTION `tel_rand`(n INT) RETURNS varchar(255) CHARSET latin1 BEGIN DECLARE chars_str varchar(100) DEFAULT '123456789'; DECLARE return_str varchar(255) DEFAULT '' ; DECLARE i INT DEFAULT 0; WHILE i < n DO SET return_str = concat(return_str,substring(chars_str , FLOOR(1 + RAND()*10 ),1)); SET i = i +1; END WHILE; RETURN return_str; END --儲存過程-- CREATE PROCEDURE `add_student`(IN n int) BEGIN DECLARE i INT DEFAULT 1; WHILE (i <= n ) DO insert into student values (null, name_rand(10), if(FLOOR(RAND() * 2), '男', '女'), i, '軟體工程', tel_rand(11)) ; set i=i+1; END WHILE; END
3、呼叫儲存過程,向記憶體表中插入資料:
CALL add_student(10)