【发布时间】:2015-05-14 11:02:33
【问题描述】:
我有一个 Grails 应用程序,它实现了多个数据源及其任务来处理和保存相应数据源表中的 excel 数据(xlsx 类型)。但是当excel文件包含大量数据并且需要更多时间来保存时,我遇到了问题。所以我使用 SQL 并通过批处理插入值,它工作正常,保存值的时间最短,但它将值保存到常见的数据源表中。所以我又遇到了一个问题,我们如何在多个数据源中使用。
这工作正常,但我们如何在多个数据源中使用。我正在描述我们的查询 -
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 结合使用效果很好。
标签: grails grails-orm batch-processing