如何通过JSR223后置处理器将JDBC响应保存到指定本地CSV路径
修改JSR223脚本实现指定路径存储JDBC响应为CSV
只需修改脚本中创建File对象的代码,将相对路径替换为绝对路径即可指定存储位置。以下是几种实用实现方式:
方式1:直接写死绝对路径
适用于固定存储位置的场景,注意不同系统的路径分隔符:
- Windows可使用
/或转义后的\\ - Linux/macOS使用
/
修改后的完整脚本:
resultSet = vars.getObject("resultSet") result = new StringBuilder() def randomRow = resultSet.get(org.apache.commons.lang3.RandomUtils.nextInt(0,resultSet.size())) randomRow.each { k, v -> result.append("${k}").append(",") } result.append(System.getProperty("line.separator")) for (Object row: resultSet ) { iter = row.entrySet().iterator() while (iter.hasNext()) { pair = iter.next() result.append(pair.getValue()) result.append(",") } result.append(System.getProperty("line.separator")) } // 替换为你的目标绝对路径 def targetFile = new File("C:/JMeter_Output/foo.csv") org.apache.commons.io.FileUtils.writeStringToFile(targetFile, result.toString(), "UTF-8")
方式2:使用JMeter变量动态指定路径
更灵活,可在「用户定义的变量」组件中设置csv_output_path变量(值为目标路径),脚本中直接引用:
// 前面代码保持不变... def targetPath = vars.get("csv_output_path") def targetFile = new File(targetPath) org.apache.commons.io.FileUtils.writeStringToFile(targetFile, result.toString(), "UTF-8")
方式3:基于系统属性生成跨平台路径
比如以用户目录为基础路径,自动适配不同系统:
// 前面代码保持不变... def userHome = System.getProperty("user.home") def targetFile = new File(userHome + "/JMeter_Results/foo.csv") org.apache.commons.io.FileUtils.writeStringToFile(targetFile, result.toString(), "UTF-8")
额外提示
如果目标路径的文件夹不存在,脚本会报错,可添加一行代码自动创建目录:
targetFile.getParentFile().mkdirs()
内容的提问来源于stack exchange,提问作者Praveen Mathi
相关产品推荐
相关产品推荐

