[英]Groovy SQL eachRow format output
我必须将MSSQL DB与MYSQL DB同步。 (> 500个表,总计> 10000000行)。
我有一个可行的解决方案,但性能不可接受。
瓶颈可能在这里:
我从MSSQL数据库中读取
mssqlDaten = mssql.eachRow (....) { row_data -> ...
由于不同表中字段名称的更改,我使用了for循环来创建insert语句
str = "insert into current_table values ("
for (over all fields from the current table) {
str += "'" + row_data[i] + "', "
}
str += ")"
mssql.execute (str)
这可能是我必须遍历循环的每一行的问题。
有人想直接以格式(ValueField1,ValueField2,....)获取行数据。 当我现在打印行数据时,我得到(NameField1:ValueField1,NameField2.ValueField2,...)。
尝试像这样批量插入:
def table = "MYTABLE"
//the list of column names could be selected from source database
def columns = ["A","B","C","D"]
def sQuery = "select ${columns.join(',')} from $table".toString()
//build insert query with column list and ? as value placeholders
//as result we have query like : insert into MYTABLE ( A,B,C,D ) values ( ?,?,?,? )
def iQuery = "insert into $table ( ${columns.join(',')} ) values ( ${ columns.collect{'?'}.join(',') } )".toString()
def updateCounts = mysql.withBatch(100, iQuery) { ps ->
mssql.eachRow (sQuery) { row_data ->
def row_array = columns.collect{ colname-> rowdata[colname] }
ps.addBatch( row_array )
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.