如何从 groovy-grails 中的 csv 文件更新 mysql 数据库



我的数据库中有一个表,需要更新csv文件(此文件在grails应用程序之外(中的某些行和列的值。csv文件包含大量数据,映射到特定地址和城市。我的申请中的某些地址有错误的城市。所以我想从数据库(grails application db(中获取一个城市,将其与 csv 文件中的城市进行比较,将地址映射到它,并将该地址添加到应用程序数据库中。

最好的方法是什么?

对于 Grails 3,请使用 https://bintray.com/sachinverma/plugins/org.grails.plugins:csv 解析 CSV,请将以下内容添加到 build.gradle。该插件也适用于Grails 2。

repositories {
    https://bintray.com/sachinverma/plugins/org.grails.plugins:csv
}
dependencies {
    compile "org.grails.plugins:csv:1+"
}

然后在您的服务中使用如下:

def is 
try {   
    is = params.csvfile.getInputStream()   
    def csvMapReader = new CSVMapReader( new InputStreamReader( is ) )   
    csvMapReader.fieldKeys = ["city","address1", "address2"]
    csvMapReader.eachWithIndex { map, idx ->
        def dbEntry = DomainObject.findByAddress1AndAddress2( map.address1, map.address2 )
        if ( map.city != dbEntry.city ) {
            // assuming we're just updating the city on current entry?
            dbEntry.city = map.city
            dbEntry.save()
        }
        // do whatever logic
    }
finally {
    is?.close
}

这当然是一个简化版本,因为我不知道你是csv还是架构布局。

最新更新