如何使用Java读取LoadRunner 12.0的OUTPUT.MDB测试结果并入库?
解决方案:Java读取LoadRunner 12.0的OUTPUT.MDB并导出/存储数据
一、Java直接查询Access格式的OUTPUT.MDB
LoadRunner 12.0生成的OUTPUT.MDB属于Jet Access数据库格式,Java可以通过JDBC驱动直接连接查询,具体操作如下:
1. 选择适配的JDBC驱动
- JDK8及以下版本:可使用JDBC-ODBC桥驱动。先在系统ODBC数据源管理器中配置Access数据源(指向目标OUTPUT.MDB),驱动类为
sun.jdbc.odbc.JdbcOdbcDriver,连接URL格式为jdbc:odbc:配置的数据源名称。 - 全JDK版本兼容方案:使用第三方驱动UCanAccess,无需ODBC配置。Maven项目直接引入依赖:
驱动类为<dependency> <groupId>net.sf.ucanaccess</groupId> <artifactId>ucanaccess</artifactId> <version>5.0.1</version> </dependency>net.ucanaccess.jdbc.UcanaccessDriver,连接URL格式为jdbc:ucanaccess:///本地OUTPUT.MDB文件路径。
2. 查询核心数据示例代码
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class LrMdbReader { public static void main(String[] args) { String mdbPath = "/path/to/your/OUTPUT.MDB"; String url = "jdbc:ucanaccess://" + mdbPath; try (Connection conn = DriverManager.getConnection(url, "", "")) { Statement stmt = conn.createStatement(); // LoadRunner常见核心表:Transaction_Summary(事务汇总)、Vuser_Summary(虚拟用户汇总) ResultSet rs = stmt.executeQuery("SELECT Transaction_Name, Average_Response_Time, Passed_Count FROM Transaction_Summary"); while (rs.next()) { // 提取数据,可直接写入目标业务数据库 String transName = rs.getString("Transaction_Name"); double avgResp = rs.getDouble("Average_Response_Time"); int passed = rs.getInt("Passed_Count"); System.out.printf("事务:%s,平均响应:%.2fms,通过次数:%d%n", transName, avgResp, passed); } } catch (Exception e) { e.printStackTrace(); } } }
提示:可直接用Access打开OUTPUT.MDB查看表结构和字段名,确认需要查询的目标表。
二、将MDB数据导出为CSV文件
1. Java代码直接导出
在上述查询逻辑基础上,添加CSV写入逻辑:
import java.io.FileWriter; import java.io.PrintWriter; // ... 省略连接和查询代码 PrintWriter csvWriter = new PrintWriter(new FileWriter("lr_perf_results.csv")); // 写入CSV表头 csvWriter.println("事务名称,平均响应时间(ms),通过次数,失败次数"); while (rs.next()) { String transName = rs.getString("Transaction_Name"); double avgResp = rs.getDouble("Average_Response_Time"); int passed = rs.getInt("Passed_Count"); int failed = rs.getInt("Failed_Count"); csvWriter.printf("%s,%.2f,%d,%d%n", transName, avgResp, passed, failed); } csvWriter.close();
2. 手动导出(临时快速方案)
如果Java开发暂有障碍,可直接用Access打开OUTPUT.MDB:选中目标数据表,右键选择「导出」,选择CSV格式,完成导出后再用Java读取CSV文件。
三、常见问题处理
- 驱动兼容问题:确保驱动版本与JDK位数、Access数据库格式匹配,UCanAccess对.mdb格式兼容性最优。
- 数据乱码:在连接URL后追加编码参数,如
jdbc:ucanaccess:///path/OUTPUT.MDB;charSet=UTF-8。 - 字段查询报错:务必通过Access查看表的字段名,LoadRunner的MDB表字段多为英文驼峰或下划线命名,注意拼写准确。
内容的提问来源于stack exchange,提问作者Becky Kenton
相关产品推荐
相关产品推荐

