使用groovy sql迁移数据库表时遇到问题

使用groovy sql迁移数据库表时遇到问题,groovy,batch-processing,Groovy,Batch Processing,我想使用不同的sql连接从一个表中选择数据并批量插入到另一个表中。这两张桌子摆得一模一样。目前我有: destination.withBatch(1000) { stmt -> source.eachRow(selectQuery) { String insertString = """ INSERT INTO dest_table VALUES (

我想使用不同的sql连接从一个表中选择数据并批量插入到另一个表中。这两张桌子摆得一模一样。目前我有:

destination.withBatch(1000) { stmt ->

    source.eachRow(selectQuery) {

        String insertString = """
                    INSERT INTO dest_table
                    VALUES (
                          ${it[0]},
                          ${it[1]});
                    """

        try {
            stmt.addBatch(insertString)
        }
        catch (Exception e) {
            println insertString
        }
    }
}
在这个过程中,数据类型似乎发生了一些变化,因为插入像
'a:string'
这样的字符串会因为冒号而变得非常不愉快

我可以执行
'${it[0]}'
来强制将其视为字符串,但这会在涉及其他数据类型时导致问题

此外,我的错误处理肯定不能正常工作。我希望它打印出它无法执行的插入,然后优雅地继续


谢谢

很可能groovy sql正在从您的sql字符串创建一个准备好的语句,任何带有冒号的语句都会被解析为参数占位符


因此,我建议按照流程分别绑定数据值,而不是将它们内联到sql语句中。这也可能会提高性能,因为准备好的语句可以被数据库缓存。

您的
selectQuery
是什么,实际的异常是什么?