首页 > 解决方案 > csv 文件的 Groovy JDBC eachrow 标头

问题描述

我有一个运行 JDBC 查询的 Jenkins Groovy 脚本,目的是将结果输出到 CSV 文件。如果我可以预测查询,代码运行良好,我可以根据已知的列数手动生成 CSV 文件。

当我将查询用作构建参数时,问题就来了。我想编写能够处理任意数量的列的代码,如果需要,包括别名。

此代码的输出;

sql.eachRow(query){ row ->
System.out.println row
}

是;

[ID:12345, date:2019-11-01 11:23:45, name:bob]
[ID:23456, date:2019-11-10 33:22:11, name:jim]

我需要的是;

ID,date,name
12345,2019-11-01 11:23:45,bob
23456,2019-11-10 33:22:11,jim

我想这样做而不必在代码中放入列名。如果我做;

System.out.println row[0] + "," + row[1] + "," + row[2]

它让我得到所需格式的数据。但它没有给我列名,甚至没有列数。而且我可能通过将其视为数组来打破各种规则。

我想我可能会问如何获取类中的方法列表,但我只想要列名而不是所有可用的方法。

标签: jenkinsjdbcgroovy

解决方案


好的,设法对其进行排序。这一切都在元数据中......

def md = row.getMetaData()
dec colCount = md.columnCount

一旦我有了列数,我就可以创建一个循环来获取列名;

md.getColumnName(loop)

推荐阅读