Правильный способ копирования данных поля в другое поле в той же таблице с помощью groovy

#groovy

#groovy

Вопрос:

Я пишу свой первый скрипт groovy для обновления всей таблицы базы данных. По сути, я хочу, чтобы число — это поле ID, которое должно быть помещено в поле ANOTHER_ID

  import groovy.sql.Sql

def url = project.getProperty("database.url")
def driver = project.getProperty("database.driver")
def user = project.getProperty("database.user")
def pass = project.getProperty("database.pass")
def output = properties['output']
def sql = Sql.newInstance(url, user, pass, driver)
def outwriter = new PrintWriter(output)

sql.eachRow("select * from THE_TABLE", { row ->
    def id = row.id
    outwriter.println "Update THE_TABLE set (ANOTHER_ID)=(${id});"
} );

outwriter.close()
sql.close()
 

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

Приветствия

Ответ №1:

Существует проблема с генерируемым вами SQL, она должна быть:

 outwriter.println "UPDATE THE_TABLE SET ANOTHER_ID = ${row.id} WHERE id = ${row.id} ;"
 

Однако вы можете заменить весь этот цикл и все остальное на

 outwriter.println "UPDATE THE_TABLE SET ANOTHER_ID = id ;"
 

Который установит каждую строку в одном запросе вместо необходимости UPDATE для каждой строки