从CSV文件中将大量数据上传到数据库的有效方法?

时间:2015-12-29 14:36:42

标签: csv grails processing-efficiency

我正在开发.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时间?

任何帮助都会受到赞赏吗?

1 个答案:

答案 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()
}