如何利用LoadRunner最高效的批量制造Oracle数据
来源:互联网 发布:京东秒抢软件 编辑:程序博客网 时间:2024/05/20 07:18
前不久写过一篇高效大批量制造MySQL数据的文章:《如何利用LoadRunner最高效的批量制造MySQL数据》,后来有人问我,怎么高效大批量制造Oracle数据。其实是一样的,也是用JDBC的批量插入(addBatch)方法,以下就提供一下我写的脚本,以供参考:
/* * LoadRunner Java script. (Build: _build_number_) * * Script Description: * */import lrapi.lr;import java.io.File;import java.io.IOException;import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException;import java.lang.StringBuffer;import java.util.List;import java.util.ArrayList;public class Actions{//设定数据库驱动,数据库连接地址、端口、名称,用户名,密码 String driverName="oracle.jdbc.OracleDriver"; String url="jdbc:oracle:thin:@192.168.1.176:1521:orcl"; String user="test"; //用户名 String password="123456"; //密码 PreparedStatement pstmt = null; //数据库连接对象 Connection conn = null; public void connection(){ try {//反射Oracle数据库驱动程序类 Class.forName(driverName); //获取数据库连接 conn = DriverManager.getConnection(url, user, password); // 关闭事务自动提交 conn.setAutoCommit(false); //输出数据库连接 System.out.println(conn); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); }}public void deconnection(){ try{ if(pstmt != null){ pstmt.close(); } if(conn != null){ conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } public void addBatchData(List alist){ try{ for (int i = 0; i < alist.size(); i++) { pstmt.setString((i+1), alist.get(i).toString()); } //把一个SQL命令加入命令列表 pstmt.addBatch(); } catch (Exception e) { e.printStackTrace(); } }public int init() throws Throwable {return 0;}//end of initpublic int action() throws Throwable { String sqlStr="insert into test_opadetail(id, opaid, pripid, uniscid, entname, enttype, enttype_cn, regorg, " + "regorg_cn, lerep, regno, certype, cerno, specause, specause_cn, abntime, decorg, decorg_cn, ismove, " + "remexcpres, remexcpres_cn, remdate, redecorg, redecorg_cn, creationtime, creatoruserid, lastmodificationtime, " + "lastmodifieruserid, deletiontime, deleteruserid, isdeleted, dom, enttype_zn, year)" + " values " + "(sys_guid(), ?, ?, ?, ?, ?, ?, '220101', '长春市工商行政管理局', 'test', ?, '', '', 1, " + "'未按规定公示年报', to_date(to_char(sysdate,'yyyy/mm/dd'),'YYYY/MM/DD'), '220101', '长春市工商行政管理局', 1," +" '', '', '', '', '', to_date(to_char(sysdate,'YYYY/MM/DD HH24:MI:SS'),'YYYY/MM/DD HH24:MI:SS'), " + "'97e6daadd18f4667be0c5c42b84b8a90', to_date(to_char(sysdate,'YYYY/MM/DD HH24:MI:SS'),'YYYY/MM/DD HH24:MI:SS'), " + "'97e6daadd18f4667be0c5c42b84b8a90', '', '', 0, ?, ?, '')"; List list = new ArrayList();//定义一组参数化数据 list.add(lr.eval_string("{Param1}")); list.add(lr.eval_string("{Param2}")); list.add(lr.eval_string("{Param3}")); list.add("TEST"+lr.eval_string("{Param4}")); list.add(lr.eval_string("{Param5}")); list.add(lr.eval_string("{Param6}")); list.add(lr.eval_string("{Param7}")); list.add(lr.eval_string("TESTA-{Param4}")); list.add(lr.eval_string("{Param12}")); connection(); StringBuffer sql = new StringBuffer(); sql.append(sqlStr); lr.start_transaction("action"); try{ //创建该连接下的PreparedStatement对象 pstmt = conn.prepareStatement(sql.toString()); for (int k=0;k<1000;k++){//一个User一批次插入1000条 addBatchData(list); }// 执行批量更新 pstmt.executeBatch();} catch (Exception e) { e.printStackTrace(); } lr.end_transaction("action", lr.AUTO); deconnection(); return 0;}//end of actionpublic int end() throws Throwable { return 0;}//end of end}然后通过Loadrunner进行多用户并发的跑脚本,快速的制造出成千上亿条数据,我就是用这个方法,在测试环境中模拟出现场的大数据量,然后去重现或定位系统当中由于慢SQL引起的慢事务问题。
阅读全文
0 0
- 如何利用LoadRunner最高效的批量制造Oracle数据
- 如何利用LoadRunner最高效的批量制造MySQL数据
- Oracle批量制造数据
- 性能测试培训总结-利用LoadRunner来制造数据
- 性能测试培训总结-利用LoadRunner来制造数据
- 【软件性能测试-LoadRunner实战技能 1】== 如何利用LoadRunner制造测试数据
- ORACLE 高效的批量处理
- 如何利用LoadRunner造数据(一)
- mysql 表的自我复制或mysql批量制造数据
- oracle如何批量造数据
- 如何有效地利用oracle的数据字典
- sqlite高效的批量数据插入sqlite3_prepare_v2
- oracle利用游标 往表中批量插入数据
- JAVA如何利用接口制造类似于C++的多继承
- 如何利用伪元素制造带三角的div
- 今晚我最得意之作——利用Oracle超级无敌强大函数生成“批量生成数据语句”!
- Oracle 的数据批量读取
- Oracle数据的批量更新
- 《深入解析Hello,World》 :第四章 class文件是怎样被读取解析执行的,JVM执行引擎
- python存储16bit和32bit图像
- Paul Graham:梦寐以求的编程语言
- Eric S. Raymond:如何成为一名黑客
- Java新手极简指北手册
- 如何利用LoadRunner最高效的批量制造Oracle数据
- Manifest merger failed with multiple errors, see logs
- Bruce Eckel:编程生涯
- Peter Norvig:十年学会编程
- 《React极简教程》第一章 Hello,World!
- 'Ext.fly(...)' 为空或不是对象
- 《React极简教程》第二章 React JSX
- 并发的更新同一个表,使用事务预防并发问题的三个实现
- Backbone.js 简介