如何修复此代码,我没有收到错误,但数据未导出到 csv

Posted

技术标签:

【中文标题】如何修复此代码,我没有收到错误,但数据未导出到 csv【英文标题】:How to fix this code, i'm not getting error but data are not exported to csv 【发布时间】:2019-04-09 10:22:30 【问题描述】:

我正在创建一个负载测试,我需要从数据库中获取数据,所以我在 gatling 中创建了另一个文件以从 db 中获取数据并将其导出到 csv 文件,以便稍后将该文件用作馈送器,导出到csv 不工作

import java.io._

import com.github.tototoshi.csv._
import io.gatling.core.Predef._
import io.gatling.core.feeder.SourceFeederBuilder
import io.gatling.jdbc.Predef._

import scala.collection.mutable.ArrayBuffer

class GenerateData extends Simulation 

  val csvFileLocation = new File("data.csv")
  val writers: CSVWriter = CSVWriter.open(csvFileLocation)

  // load and register JDBC driver for mysql
  Class.forName("com.mysql.cj.jdbc.Driver")

  // DATABASE
  val dbStatement: String = System.getProperty("dbStatement", "SELECT * FROM db limit 1")
  val dbQuery: SourceFeederBuilder[Any] = jdbcFeeder("jdbc:mysql://localhost:3306/table?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC", "username", "pass", dbStatement)
//
  var recordCount: Int = dbQuery.readRecords.length
  var mList = new Array[String](recordCount)
  var dataString: ArrayBuffer[String] = ArrayBuffer[String]()
  var dataCounts: ArrayBuffer[Int] = ArrayBuffer[Int]()
  val out = new BufferedWriter(new FileWriter(csvFileLocation))
  val writer = new CSVWriter(out)

  val scn = scenario("Database Query")
    .feed(dbQuery)
    writer.writeRow(dataString)
    writer.close()

  setUp(scn.inject(atOnceUsers(1)))

csv 文件中没有添加任何内容,我只收到有关来自 gatling 的报告的错误

你能帮忙吗

【问题讨论】:

如果您打印recordCount,实际上是否有任何记录返回?另外,你的意思是将recordCount(一个Int)放在mList(一个字符串数组)中吗? 【参考方案1】:

你这样做:

var dataString: ArrayBuffer[String] = ArrayBuffer[String]()
writer.writeRow(dataString)

dataString 始终为空,您不会覆盖dataString

【讨论】:

【参考方案2】:

我觉得你的

writer.writeRow(dataString) writer.close()

线路也需要在适当的加特林 dsl 步骤中吗?

所以...

val scn = scenario("Database Query")
.feed(dbQuery)
.exec(session -> 
    //code to add the value from you dbQuery feeder to dataString 
    writer.writeRow(dataString)
    writer.close()
    session
)

【讨论】:

以上是关于如何修复此代码,我没有收到错误,但数据未导出到 csv的主要内容,如果未能解决你的问题,请参考以下文章

收到此错误:无法读取未定义的属性“0”

如何修复这个特定的“未声明的标识符”错误?

如何修复此错误:“SQLContext 对象没有属性‘jsonFile’

使用 React Context 时如何修复此错误

如何在php中修复“未捕获的错误:在null上调用成员函数insertOne()”

如何修复('throw er; //未处理'错误'事件')代码生命周期?