Как получить все значения полей из строки таблицы MySQL в Groovy без использования имен полей? - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь создать простой текстовый файл из запроса SQL в Groovy, где каждая строка представляет собой обработанные значения строки базы данных, поля разделяются настраиваемым разделителем.

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

Но как мне получить данные без указания каждого поля, то есть перебирать результат запроса?

Обратите внимание, что мне нужно добавить свой собственный разделитель между каждым значением поля и в конечном итоге обработать каждое значение поля если нужно сделать уборку.

import groovy.sql.Sql

db_host = 'foo.db.int'
db_name = 'mydb'
mysql_login = 'mylogin'
mysql_password = 'XXXXXXX'

// Connection settings
def db = [
            url:'jdbc:mysql://' + db_host + ':3306/' + db_name,
            user: mysql_login,
            password:mysql_password,
            driver:'com.mysql.jdbc.Driver'
        ]
// Create connection
def sql = Sql.newInstance(db.url, db.user, db.password, db.driver)

// Result store
def output = []

// SQL query
String sql_query = "SELECT * FROM mytable WHERE status = 'ON'"

sql.eachRow(sql_query){ 
    // Here all field are explicitly named
    row -> output.push(row.fieldone + ';' + row.fieldtwo + ';' row.fieldthree)
}

sql.close()

// Flat file to store query result
File out_file = new File("myfile.txt")

// Populate file with result rows
output.each {
    out_file.append("$it\n")
}

1 Ответ

0 голосов
/ 07 января 2020

Могут помочь следующие фрагменты:

sql.eachRow(sql_query){ row ->
    output << row.toRowResult().values()
}
...
output.each {
    out_file.append("${it.join(';')}\n")
}

Однако, если у вас большие объемы данных, это будет не очень умно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...