mysql应用之通过存储过程方式批量插入数据,
我们平时的测试过程中有一个环节就是准备测试数据,包括准备基础数据,准备业务数据,使用的场景包括压力测试,后台批量数据传输,前端大数据查询导出,或者分页打印等功能,准备测试数据我们通俗点讲就是造数据,根据不同的使用场景我们有不同的造数据的方式,比如需要大数据时我们可以用jmeter压测获取大数据,也可以导入生产数据,简单少许的测试数据我们直接在数据库中插入,本篇主要记录的是另外一种造数据的方式——通过编写存储过程来实现批量数据插入。
一、编写调用存储过程:
数据库类型:mysql
需求:在user表中插入数据,user表主键为id,id方式为长度为32位的字母+数字随机字符串
1、创建存储过程

1 DELIMITER $$
2 USE `db_test`$$
3 DROP PROCEDURE IF EXISTS `proc_user`$$
4
5 CREATE DEFINER
=`root`@`
%`
PROCEDURE `proc_user`()
6 BEGIN
7 DECLARE user_name VARCHAR(
60);
8 DECLARE email
VARCHAR(
150);
9 DECLARE rand_id
VARCHAR(
120);
10 DECLARE id
VARCHAR(
120);
11 DECLARE i
INT DEFAULT 1000;
12 DECLARE createtime
DATETIME;
13 DECLARE tel_body
VARCHAR(
40);
14 DECLARE tel
VARCHAR(
60);
15 -- 调试过程, 先插入5条
16 WHILE i
<= 1005 DO
17 -- user_name = test + i
18 SET user_name = CONCAT(
'test', i);
19 SET email
= CONCAT(
user_name,
'@qq.com');
20 SET rand_id
= SUBSTRING(MD5(
RAND()),
1,
28);
21 -- id = rand_id + i, +i的目的主要是为了区分测试数据与user_name对应
22 SET id
= CONCAT(rand_id, i);
23 SET createtime
= NOW();
24 SET tel_body
= FLOOR(
RAND()
*100000000);
25 -- tel = 159开头随机号码
26 SET tel
= CONCAT(
'159', tel_body);
27
28 INSERT INTO `
user`
29 VALUES(id,
30 user_name,
31 '202cb962ac59075b964b07152d234b70',
32 '0cc495f78776486294ebc7c08831aabe',
33 NULL,
34 createtime,
35 tel,
36 email
37 );
38 SET i
=i
+1;
39 END WHILE;
40 END$$
View Code
2、调用存储过程

1 CALL `proc_user`();
View Code
3、查看表数据

4、模拟批量插入5000条数据,
1)调用存储过程,全部数据插入完成耗时如下:

2)核对数据库插入数据总量

二、函数简要解释:
1、CONCAT()函数:
拼接函数,将多个字符串拼接成一个字符串,语法为:CONCAT(str1,str2,…)
2、RAND()函数,FLOOR()函数:
RAND(),0-1之间的随机数,带小数点

FLOOR(),取整;
FLOOR(RAND() *10),获得0-10之间的整数(包含0,不包含10);FLOOR(RAND() *100000000),获取10000000-99999999之间的随机整数

3、SUBSTRING()函数:
截取子字符串函数,从特定位置开始的字符串返回一个给定长度的子字符串
语法:SUBSTRING(字符串,位置,长度),如SUBSTRING(MD5(RAND()),1,28),从MD5随机字符串的第1位开始截取长度为28位的子字符串
三、其他数据准备的参考文档
jmeter压测获取大数据可参考:https://www.cnblogs.com/simple1025/p/11265537.html
mysql导入大数据量的生产数据可参考:https://www.cnblogs.com/simple1025/p/11151882.html
http://www.htsjk.com/Mysql/30896.html
www.htsjk.Com
true
http://www.htsjk.com/Mysql/30896.html
NewsArticle
mysql应用之通过存储过程方式批量插入数据, 我们平时的测试过程中有一个环节就是准备测试数据,包括准备基础数据,准备业务数据,使用的场景包括压力测试,后台批量数据传输,...
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。