Grails 优化Mysql批量查询的生成

Grails 优化Mysql批量查询的生成,grails,groovy,Grails,Groovy,我通过脚本将数据从一个数据库迁移到另一个数据库。 我无法直接在db服务器上导出为csv或其他内容。 因此,我制作了一个脚本,从一个脚本中读取行,并在mysql上插入块。 基本问题是,将从服务器接收的列表转换为Mysql执行大容量插入所需的格式,在脚本上生成aux需要花费太多时间,例如,对于2500个值,需要40秒。 但是我真的不确定是否可以做一个大的改变,因为我真的没有发现任何明显的代码开销,显然我已经做了两个each,但我真的没有找到其他方法 def query= """SELECT *

我通过脚本将数据从一个数据库迁移到另一个数据库。 我无法直接在db服务器上导出为csv或其他内容。 因此,我制作了一个脚本,从一个脚本中读取行,并在mysql上插入块。 基本问题是,将从服务器接收的列表转换为Mysql执行大容量插入所需的格式,在脚本上生成aux需要花费太多时间,例如,对于2500个值,需要40秒。 但是我真的不确定是否可以做一个大的改变,因为我真的没有发现任何明显的代码开销,显然我已经做了两个each,但我真的没有找到其他方法

  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
}
然后在生成aux时,我插入MySQL


谢谢

很好,我们无法修复这个问题,但是在一个quartz作业中实现了它,使它并发,部署了5个虚拟机,并在一天内完成了这个过程。
蛮力。

不幸的是,要理解你在做什么远不是件容易的事。请记住,我们没有您的数据库,我们无法运行您的代码,因此我们依赖于清晰性来理解正在发生的事情。请演示示例输出。例如,将
sql.rows(query)的示例输出作为List
将有很大的帮助。