1. 程式人生 > 其它 >Mysql利用儲存過程插入100萬條測試資料

Mysql利用儲存過程插入100萬條測試資料

技術標籤:資料庫mysql

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)

在這裡插入圖片描述