2015-11-17 62 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,并在一天内完成流程。 蛮力。