繁体   English   中英

Groovy SQL eachRow格式输出

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM