我使用从 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;
}
}
}
}