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