我有一个Grails应用程序,它实现了多个数据源及其任务,以在相应的数据源表中处理和保存excel数据(xlsx类型)。但是当excel文件包含大量数据并且需要更多时间来保存时,我遇到了问题。所以我使用SQL并通过批量插入值,它工作正常,花费最少的时间来保存值,但它将值保存到公共数据源表中。所以我再次遇到问题,我们如何使用多个数据源。如何在Grails中实现批处理
这工作正常,但我们如何在多个数据源中使用。我描述我们的查询 -
def dataSource
def sql = new Sql(dataSource)
sql.withBatch { stmt ->
stmt.addBatch("INSERT INTO TableName(Fields...) values(.......)
stmt.executeBatch()
}
我不想通过列表来实现它,因为它采取了大致相同的时间,以节省即
def dataSourceName = 'lookup'
List list= []
(0..10000).each{
Domain dom = new Domain('some property associated with domain class')
batch.add(dom)
if(list.size()>1000){
for(Domain object in list){
object."$dataSourceName".save()
}
}
}
您应该使用像Spring Batch这样的批处理框架。它与Grails和Groovy结合使用效果很好。 –