测试中有需要大批量数据场景:一是准备大量测试数据,二是对数据库执行压测,本篇记录三种造大批量数据的方法
目录
1、执行存储过程
2、使用python
3、使用jmeter
准备工作:
在数据库中创建一张表,a唯一:
create TABLE mytest(a int(11) PRIMARY key,b int(11),c VARCHAR(20));
本篇记录生成10条数据方法,具体需要多少可以根据自己的需求设置循环次数
1、执行存储过程
了解存储过程格式可参考:https://www.cnblogs.com/weizhideweilai/p/8552021.html
描述:将数据库中不可重复的字段定义成变量,每次执行插入后,将该变量加1
drop PROCEDURE if EXISTS newone; CREATE PROCEDURE newone() begin DECLARE id1 int; #定义一个变量 set id1=1; #初始化一个值 while id1<=10 do insert into mytest(a,b,c) VALUES (id1,1,"test"); set id1=id1+1; end while; end; call newone();
结果:
2、使用python
第一种:使用python生成数据,再复制到mysql中执行
python脚本:
for i in range(1,11): a = "(%s, 1, 'test'),"%int(i) with open("E://b.txt", "a") as fp: fp.write(a+" ")
生成数据如下:
修改结束符为分号,在mysql中执行插入:
insert into mytest(a,b,c) VALUES (1, 1, 'test'), (2, 1, 'test'), (3, 1, 'test'), (4, 1, 'test'), (5, 1, 'test'), (6, 1, 'test'), (7, 1, 'test'), (8, 1, 'test'), (9, 1, 'test'), (10, 1, 'test');
第二种:直接使用python链接mysql,执行sql语句
参考https://www.cnblogs.com/weizhideweilai/p/13227049.html设置python连接mysql
在main函数中编写脚本:
if __name__ == '__main__': insert_sql = "INSERT INTO mytest VALUES " insert_values = "".join(["(%s, 1, 'test'), "%int(i) for i in range(1,11)]) # 拼接sql sql = insert_sql + insert_values[:-3]+";" print(sql) db = DbConnect(dbinfo, database="haveatry") db.execute(sql) db.close()
3、使用jmeter
首先使用jmeter连接mysql,参考:https://www.cnblogs.com/weizhideweilai/p/9320805.html
使用函数助手生成随机数${__Random(1,20,${a})}
填写sql请求:
设置循环次数为10:
随机数尽量设置大一点,避免重复,我这里范围太小,会有重复值生成,导致部分请求执行失败
结果: