我正在开发.csv文件,其中有5,000 Contacts
个。{我需要的是将所有联系人插入单Group
。但是在这样做的过程中,将数据插入数据库需要花费大约30分钟的时间。
那么如何才能提高插入时间的效率,以便在可接受的时间内完成。
以下是代码段:
def groovyFile = new File(webDirectory, fileName)
groovyFile.eachLine {
def variables = it.split(',')
contactInstance = new Contact(name: '', number: variables.getAt(0))
...
group.addToContacts(contactInstance)
}
group.save(flush: true)
出现问题是因为它为.csv文件中的每个联系人渲染5K时间?
任何帮助都会受到赞赏吗?
答案 0 :(得分:1)
请参阅此主题的精彩博文
http://naleid.com/blog/2009/10/01/batch-import-performance-with-grails-and-mysql
简而言之,你不应该为每次保存使用flush:true,而是每隔几百次插入刷新会话,如下所示:
def cleanUpGorm() {
def session = sessionFactory.currentSession
session.flush()
session.clear()
propertyInstanceMap.get().clear()
}