Я пытаюсь создать простой текстовый файл из запроса 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")
}