2015-11-17 99 views
0

我正在通過腳本將數據從一個數據庫遷移到另一個數據庫。 我沒有可能性作爲csv或直接在數據庫服務器上導出。 所以我做了一個腳本來讀取一個行,並在MySQL上插入批量。 基本問題是將從服務器重新引導的列表轉換爲需要Mysql進行批量插入的格式,在腳本上生成aux需要太多時間,例如對於2500個值需要40秒。 但是真的不知道是否可以做出重大改變,因爲在代碼中沒有發現任何明顯的開銷,顯然我做了兩次,但實際上我沒有找到其他方式。優化Mysql批量查詢的生成

def query= """SELECT * FROM tablex """.toString() 
    def fullRowResults = sql.rows(query) as List 
    fullRowResults =fullRowResults.collate(2500) 
fullRowResults.each{ frr -> 
    def aux="" 
    frr.each{ 
    def aux2= it.values() 
    aux2= aux2.collect{ 
    it.replaceAll("'","") 
    } 
    aux2=aux2.join("','") 
    aux2="('"+aux2+"')," 
    aux+=aux2 
} 

然後白衣輔助生成,我在插入MySQL的

感謝

+1

不幸的是,這很難理解你在做什麼。記住我們沒有你的數據庫,我們不能運行你的代碼,所以我們依靠清晰的理解發生了什麼。請演示**示例**輸出。例如,將sql.rows(query)作爲List的示例輸出將會有很長的路要走。 –

回答

0

好,不容拿不動這一點,但在石英工作實現了它,使它同時,並部署了5 vms,並在一天內完成流程。 蠻力。