jenkins - 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]
它让我得到所需格式的数据。但它没有给我列名,甚至没有列数。而且我可能通过将其视为数组来打破各种规则。
我想我可能会问如何获取类中的方法列表,但我只想要列名而不是所有可用的方法。
解决方案
好的,设法对其进行排序。这一切都在元数据中......
def md = row.getMetaData()
dec colCount = md.columnCount
一旦我有了列数,我就可以创建一个循环来获取列名;
md.getColumnName(loop)
推荐阅读
- sql - Concat 然后在 Hive 中分组
- c# - 如何将变量数据从控制器传递到视图(MVC)
- javascript - 如果Server以text/html类型响应,Client会识别不出来吗?
- flutter - 如何获取待处理通知的[scheduledDate](颤动本地通知)
- python - 如何通过特定列的值创建数据框的两个子集?
- java - 我想在 java 程序的帮助下从 azure 监视器中获取活动、密钥库、nsg 流日志等日志,并将它们发送到 tcp/http 端点
- excel - VBA 帮助缩短代码,引入例程?
- javascript - 将地图上的像素 x,y 位置转换为 lat 和 long
- reactjs - 反应应用程序中的引导导航栏不适用于移动视图
- apache-kafka - Kafka - 确保至少有一个消费者会收到消息