測試中有需要大批量數據場景:一是准備大量測試數據,二是對數據庫執行壓測,本篇記錄三種造大批量數據的方法
目錄
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+"\n")
生成數據如下:
修改結束符為分號,在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'), \n"%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:
隨機數盡量設置大一點,避免重復,我這里范圍太小,會有重復值生成,導致部分請求執行失敗
結果: