Groovy заголовки JDBC для каждой строки в CSV-файле - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть сценарий Jenkins Groovy, который выполняет запрос JDBC с целью вывода результата в файл 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]

Получит данные в нужном формате. Но это не дает мне названия столбцов или даже количество столбцов. И я, вероятно, нарушаю всевозможные правила, рассматривая его как массив.

Думаю, я спрашиваю, как получить список методов в классе, но мне нужны только имена столбцов, а не все доступные методы.

Ответы [ 2 ]

0 голосов
/ 01 ноября 2019

ОК, удалось его отсортировать. Все было в метаданных ...

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

После подсчета количества столбцов я мог создать цикл для получения имен столбцов;

md.getColumnName(loop)
0 голосов
/ 01 ноября 2019

Это даст вам заголовки, но это не тот же набор результатов, что и ваш набор результатов eachRow (запрос):

    println sql.firstRow(query).keySet().collect().join(",")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...