0

我使用从 excel 导入数据,但我使用 bootstrap.groovy 编写代码,并在应用程序启动时调用我的导入脚本方法。

这里的场景是我有 8000 个相关数据,如果它们不在我的数据库中,则要导入一次。而且,当我将它部署到 tomcat6 时,它会阻止其他应用程序部署,直到它完成导入。所以,我想使用单独的在不影响性能和阻止其他部署的情况下以任何方式运行脚本的线程。

代码摘录...

class BootStrap {

    def grailsApplication
    def sessionFactory

    def excelService

def importStateLgaArea(){


        String fileName = grailsApplication.mainContext.servletContext.getRealPath('filename.xlsx')
        ExcelImporter importer = new ExcelImporter(fileName)
        def listState = importer.getStateLgaTerritoryList() //get the map,form excel
        log.info "List form excel:${listState}"

        def checkPreviousImport = Area.findByName('Osusu')
        if(!checkPreviousImport) {
        int  i = 0
        int j = 0 // up

    date cases
            def beforeTime = System.currentTimeMillis()
            for(row in listState){

                def state = State.findByName(row['state']) 
                if(!state) {
                //  log.info "Saving State:${row['state']}"
                    row['state'] = row['state'].toString().toLowerCase().capitalize()
                //  log.info "after capitalized" + row['state']
                    state = new State(name:row['state'])
                    if(!state.save(flash:true)){
                        log.info "${state.errors}"  
                        break;
                    }           
                }

}
}
4

1 回答 1

0

对于大数据的导入,我建议考虑使用Spring Batch。很容易将它集成到 grails 中。您可以尝试使用此插件或手动集成它。

于 2013-09-19T07:30:20.473 回答