欢迎投稿

今日深度:

mysql应用之通过存储过程方式批量插入数据,

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

www.htsjk.Com true http://www.htsjk.com/Mysql/30896.html NewsArticle mysql应用之通过存储过程方式批量插入数据, 我们平时的测试过程中有一个环节就是准备测试数据,包括准备基础数据,准备业务数据,使用的场景包括压力测试,后台批量数据传输,...
相关文章
    暂无相关文章
评论暂时关闭