向Mysql批量插入50萬條數據

》批量插入數據腳本

表Sql:

CREATE TABLE dept(

id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,

deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,

dname VARCHAR(20) NOT NULL DEFAULT '',

loc VARCHAR(13) NOT NULL DEFAULT ''

)ENGINE=INNODB DEFAULT CHARSET=GBK;

 

 

CREATE TABLE emp

(id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,

empno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,

ename VARCHAR(20) NOT NULL DEFAULT '',

job VARCHAR(9) NOT NULL DEFAULT '',

mgr MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,

hiredate DATE NOT NULL,

sal DECIMAL(7,2) NOT NULL,

comm DECIMAL(7,2) NOT NULL,

deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0

)ENGINE=INNODB DEFAULT CHARSET=GBK;

 

隨機產生字符串:

DELIMITER $$

CREATE FUNCTION rand_string(n INT) RETURNS VARCHAR(255)

BEGIN

DECLARE chars_str VARCHAR(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

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()*52),1));

SET i=i+1;

END WHILE;

RETURN return_str;

END $$

 

隨機產生部門編號:

DELIMITER $$

CREATE FUNCTION rand_num()

RETURNS INT(50)

BEGIN

DECLARE i INT DEFAULT 0;

SET i= FLOOR(100+RAND()*10);

RETURN i;

END $$

 

 

(假如要刪除:drop function rand_num;)

 

創建存儲過程:

 創建往emp 表中插入數據的存儲過程:

DELIMITER $$

CREATE PROCEDURE insert_emp(IN START INT(10),IN max_num INT(10))

BEGIN

DECLARE i INT DEFAULT 0;

SET autocommit =0;

REPEAT

SET i = i+1;

INSERT INTO emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) VALUES((START+i),rand_string(6),'SALESMAN',0001,CURDATE(),2000,400,rand_num());

UNTIL i=max_num

END REPEAT;

COMMIT;

END$$

 

 

往dept表添加隨機數據:

DELIMITER $$

CREATE PROCEDURE insert_dept(IN START INT(10),IN max_num INT(10))

BEGIN

DECLARE i INT DEFAULT 0;

REPEAT

SET i = i+1;

INSERT INTO dept(deptno,dname,loc) VALUES ((START+i),rand_string(10),rand_string(8));

UNTIL i = max_num

END REPEAT;

COMMIT;

END $$

 

 

(如果下刪除:DROP PROCEDURE insert_dept;)

 

 

調用存儲過程:

(先把;分號爲介紹符切換回來:DELIMITER ;  )

插入dept:

  CALL insert_dept(100,10);

 

插入emp數據添加500000條數據;

CALL insert_emp(100001,500000);

查閱:

SELECT COUNT(*) FROM emp;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章