向Mysql批量插入50万条数据

本文提供了一套完整的MySQL脚本,用于批量生成和插入随机数据到数据库表中,包括部门和员工信息。脚本涵盖了自定义函数生成随机字符串和数字,以及存储过程实现数据批量插入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

》批量插入数据脚本

表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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值