生成大量的测试数据的三种方法,1写sql,2工具plsql,3LoadRunner

性能测试场景之一: 
[1]03 临时表里有20W记录,发送ESB 
说明:结算后台对完账后,在对账汇总确认菜单中点“确认”按钮,系统会将已清算的数据信息插入资金库的临时表pac_biz_account_histmp中,然后逐步esb发送给物流订单系统进行分润处理。 
一 通过工具生成20w笔记录1、  首先介绍一种很方便的方法:采用PL SQL Develop内嵌的data generator工具 
1)  打开PL SQL Develop,选择Tools/Data Generator,出现以下界面 

 




2)  Owner中选择资金库Pacioli,Table中选择临时表pac_biz_account_histmp,number of records中输入200000(这些都可以根据具体的需要进行选择的噢) 
然后下面会出现临时表中所有的字段,根据实际情况进行配置后,显示如下: 


 


3)        当然拉,为了防止ID和现有的表重复,我们是可以使用SEQUENCES的,点击每个字段后面的…选项可以对每个字段进行设置 
4)        所有的准备好之后,我们可以先测试一下Strat a test run,测试通过后,可以选择窗口中左下角的create data in DB按钮即可生成数据到临时表中。 

2.通过自动化工具实现,下面以load runner为例 
   1)  Load runner是一款负载压力测试工具,可以通过load runner的Vurtual User Generator工具实现模拟业务场景然后系统向数据库中插入记录,跟进实际业务实现使用load runner向表中插入记录,或者通过脚本来实现,现将脚本操作和运行过程分享下: 
   2) 打开Mercury LoadRunner,选择applications/Vurtual User Generator,在出现的窗口中选择Oracle(2-tier)如下图: 

 


3) 点击ok后,在弹出的窗口中选择: 

 



其中Program to record 选择电脑中plsqldev.exe的安装路径,然后点击ok,在弹出的窗口中输入以下脚本: 
vuser_init() 

    unsigned long rownum; 
//初始化数据库部分 
         lrd_init(&InitInfo, DBTypeVersion); 
         lrd_initialize_db(LRD_DBTYPE_ORACLE, 3, 0); 
         lrd_env_init(LRD_DBTYPE_ORACLE, &OraEnv1, 0, 0); 
         lrd_ora8_handle_alloc(OraEnv1, SVCCTX, &OraSvc1, 0);// 
         lrd_ora8_handle_alloc(OraEnv1, SERVER, &OraSrv1, 0); 
         lrd_ora8_handle_alloc(OraEnv1, SESSION, &OraSes1, 0); 

//连接数据库 
         lrd_server_attach(OraSrv1, "PAY", -1, 0, 0);//pay怎么得到的? 
//初化始句柄 
    lrd_ora8_attr_set_from_handle(OraSvc1, SERVER, OraSrv1, 0, 0); 
//连接数据库 
         lrd_ora8_attr_set(OraSes1, USERNAME, "adm_zhifb", -1, 0); 
         lrd_ora8_attr_set(OraSes1, PASSWORD, "ali88", -1, 0); 

//初始化句柄 
    lrd_ora8_attr_set_from_handle(OraSvc1, SESSION, OraSes1, 0, 0); 

//进程开始       
    lrd_session_begin(OraSvc1, OraSes1, 1, 0, 0); 
         lrd_ora8_handle_alloc(OraEnv1, STMT, &OraStm1, 0); 
//设定语句 
    lrd_ora8_stmt(OraStm1, "insert into zhifb.beyond_bank_pay_online(id,iw_account_no,gmt_create) values (zhifb.seq_beyond_bank_pay_online.nextval,1234,to_date('2005-4-12 13:45:34','YYYY-MM-DD fmHH24fm:MI:SS'))",1,0,0); 
//执行语句 
lrd_ora8_exec(OraSvc1, OraStm1, 0, 0,&rownum,0,0, 0, 0, 1); 
         return 0; 

这个脚本是师傅流川教我的,目前我也不大懂,有兴趣的同学以后可以和我一起学习这个哦,不过这个脚本在运行的时候向临时表插入有点问题,希望各位大虾指点下 
二  直接通过SQL语句来实现      在表浏览视图,选择表后,按住鼠标左键将表拖到query sql窗口,然后在弹出的快捷菜单中选择insert,然后在另一个表里面点select,修改where条件(这样就可以不用书写这么一大串SQL语句了,直接通过鼠标操作实现  
insert   into  pac_biz_account_histmp 
  ( id ,   bank_name,   trans_code,   digest_no,   amount,   trans_log_id,   account_date,   compare_date,   clear_date,   voucher_no,   batch_no,   gmt_create,   gmt_modified,   memo,   standby_voucher_no,   operator
   select   id ,  bank_name, trans_code, digest_no,amount,trans_log_id,account_date, compare_date,         clear_date,         voucher_no,         batch_no,         gmt_create,         gmt_modified,         memo,         standby_voucher_no,          operator  
from  pac_biz_account_history  where   rownum <5001  and   bank_name = '宅急送快递'  and  trans_code = '400322' 
三  通过存储过程 来实现存储过程可以理解为是内嵌在ORACLE里面的包装好的SQL语句。存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。 
在公司内部,创建存储过程是必须通过DBA的批准的。在数据库中查找存储过程很方便,在数据库浏览窗口中选择Procedures来查看,可以看一个简单的例子: 
while() 

         callprocedure("p_test").; 
         } 
create procedure p_test(a,b,c) 
begin 
         insert into t values(a,b,c); 
end; 
四 通过程序来实现   程序实现有两种方式 
一种为通过for循环,链接数据库,然后执行insert操作实现,不过这种方式会每insert一条记录然后就要链接一次数据库,而且还要网络传输数据到DB中,所以会比较慢 
另一种也是通过程序,不过可以把链接数据库的操作在for循环之前执行,然后insert多条数据的时候就只用耗费网络传输数据的时间了,这样比之前的一种操作要节约时间一些。 
附上一个简单的例子: 
java 
while() 

         callprocedure("p_test").; 
         } 
create procedure p_test(a,b,c) 
begin 
         insert into t values(a,b,c); 
end;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值