获得数据的方式
- Mysql过程调用的方式。
- EasyExcel数据导入的方式。
- JAVA + MYBATIS批插入方式。
- 通过爬虫爬取接口数据、网页数据的方式
Mysql过程调用方式
通过实验发现这种方式的执行效率并不高,当单次数据量达到50000条的时候需要执行46秒左右
-- 允许mysql创建函数
set global log_bin_trust_function_creators=TRUE;
-- 部门表
create table if not EXISTS 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 ""
);
-- 员工表
create table if not EXISTS 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,
comn decimal(7,2) not null,
deptno mediumint unsigned not null default 0
);
# 随机产生字符串
DELIMITER $$
CREATE FUNCTION if not EXISTS rand_string(n INT) RETURNS VARCHAR(255)
BEGIN
DECLARE chars_str VARCHAR(100) DEFAULT 'abcdefghijklmlopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
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 if not EXISTS rand_num() RETURNS INT(5)
BEGIN
DECLARE i INT DEFAULT 0;
SET i = FLOOR(100+RAND()*10);
RETURN i;
END $$
# 创建往emp表中插入数据的存储过程
DELIMITER $$
CREATE PROCEDURE if not EXISTS insert_emp(IN START INT(10),IN max_num INT(10))
BEGIN
DECLARE i INT DEFAULT 0;
# set autocommit =0 把autocommit设置成0,把默认提交关闭
SET autocommit = 0;
REPEAT
SET i = i + 1;
INSERT INTO emp(empno,ename,job,mgr,hiredate,sal,comn,deptno) VALUES ((START+I),rand_string(6),'SALEMAN',0001,now(),2000,400,rand_num());
UNTIL i = max_num
END REPEAT;
COMMIT;
END $$
-- 测试while循环
DELIMITER $$
CREATE PROCEDURE if not EXISTS test(IN START INT(10))
BEGIN
DECLARE i INT DEFAULT 0;
# set autocommit =0 把autocommit设置成0,把默认提交关闭
WHILE i < START do
set i = i + 1;
end WHILE;
SELECT i;
END $$
CALL test(10);
SELECT count(*) FROM emp e ORDER BY e.id desc;
# dept插入数据的存储过程
DELIMITER $$
CREATE PROCEDURE if not EXISTS insert_dept(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 dept( deptno,dname,loc) VALUES((START+i),rand_string(10),rand_string(8));
UNTIL i = max_num
END REPEAT;
COMMIT;
END $$
-- 插入10000条数据 执行10s
call insert_dept(0,10000);
-- 插入10000条数据 执行2.3s
call insert_emp(0,10000);
-- 清空表数据
-- TRUNCATE dept
-- TRUNCATE emp
原文链接:https://blog.csdn.net/qq_35010942/article/details/93376498