如何在groovy上讀取和導入.csv文件在grails上。我有.csv文件與數據和
需要導入到數據庫使用用戶界面。Groovy加載.csv文件
回答
在Groovy中使用CSV文件一直有不同的可能性。由於Groovy與Java完全可互操作,因此您可以使用現有的CSV庫中的一種,例如, OpenCSV。
根據該CSV的複雜性文件,您正在使用,你也可以使用Groovy的標準文件/字符串處理的可能性:
def sql = Sql.newInstance("jdbc:mysql://localhost:3306/mydb",
"user", "pswd", "com.mysql.jdbc.Driver")
def people = sql.dataSet("PERSON")
new File("users.csv").splitEachLine(",") {fields ->
people.add(
first_name: fields[0],
last_name: fields[1],
email: fields[2]
)
}
編輯: 凱利·羅賓遜只寫了一個不錯的blog post約在Groovy中可用於處理CSV文件的不同可能性。
編輯#2: 作爲倫納德Axelsson他GroovyCVS庫recently released version 1.0,我想我一定要這個增加的選項列表。
@Grab( 'org.apache.commons:公地CSV:1.2') 進口org.apache.commons.csv.CSVParser 進口靜態org.apache.commons.csv。 CSV格式。*
@Grab('org.apache.commons:commons-csv:1.2')
import org.apache.commons.csv.CSVParser
import static org.apache.commons.csv.CSVFormat.*
import java.nio.file.Paths
Paths.get('countryInfo.txt').withReader { reader ->
CSVParser csv = new CSVParser(reader, DEFAULT.withHeader())
for (record in csv.iterator()) {
println record.dump()
}
}
Commons-CSV有很好的API,我推薦。
隨着GroovyCSV:
@Grab('com.xlson.groovycsv:groovycsv:0.2')
import com.xlson.groovycsv.CsvParser
def csv = '''Name,Lastname
Mark,Andersson
Pete,Hansen'''
def data = new CsvParser().parse(csv)
for(line in data) {
println "$line.Name $line.Lastname"
}
(從它的樣本獲取)
最後一招:正則表達式。
下面是如何解析的文件might contain a quoted escaped string in it's fourth column:
File detailedStatsFile = new File("stats.csv");
detailedStatsFile.eachLine { line, number ->
// Number Of Executions, Total Milliseconds, Milliseconds per execution, "Type"
def match = line =~ /([^,]*?),\s*([^,]*?),\s*([^,]*?),\s*(?:([^",]+)|(?:"((?:[^\\"]++(?:\\")?)++)"))$/; //"
if (!match.matches())
continue;
def numberOfExecs = Integer.valueOf(match.group(1));
def totalMillis = Integer.valueOf(match.group(2));
def detailedStatName = match.group(4);
if (detailedStatName == null)
detailedStatName = match.group(5).replaceAll('\\"','"');
第一種方法失敗,出現'groovy.lang.MissingMethodException:方法沒有簽名:sun.nio.fs.UnixPath.withReader()適用於參數類型:(myscript $ _run_closure1)values:[myscript $ _run_closure1 @ 536f2a7e]' – 2016-09-20 08:33:01
使用xlson的GroovyCSV:
@Grab('com.xlson.groovycsv:groovycsv:1.1')
import static com.xlson.groovycsv.CsvParser.parseCsv
for(line in parseCsv(new FileReader('countries.csv'), separator: ';')) {
println "Country=$line.COUNTRY, Capital=$line.CAPITAL"
}
名稱從CSV文件的標題中獲取的字段。
如果CSV文件沒有標題,則可以通過編程方式指定字段名稱。 ( ':opencsv:com.opencsv 4.0')使用opencsv
@Grab
例 進口com.opencsv.CSVReader 進口com.opencsv.CSVWriter
class TestCsvReader {
static main(args) {
def csv = '''"a","b","c"
"d","e","f"
'''
def Reader csvFileReader = new StringReader(csv)
def Writer csvFileWriter = new PrintWriter(System.out)
def CSVReader reader = new CSVReader(csvFileReader)
def CSVWriter writer = new CSVWriter(csvFileWriter)
reader.iterator().each { fields ->
writer.writeNext(fields)
}
reader.close()
writer.close()
}
}
- 1. 加載csv文件
- 2. Groovy CSV文件比較
- 3. Jsefa - 加載CSV文件
- 4. 用R加載csv文件
- 5. Neo4j加載csv文件
- 6. Groovy下載文件
- 7. 從文件夾加載.csv文件
- 8. groovy需要加載源文件
- 9. 使用groovy類加載器無法加載PDF文件
- 10. 使用groovy導入csv文件
- 11. Groovy的裝載jar文件
- 12. Groovy安全文件下載
- 13. groovy加載YAML文件修改並將其寫入文件
- 14. 下載csv文件
- 15. 下載csv文件
- 16. 下載CSV文件
- 17. 將csv文件加載爲ts
- 18. F#Deedle的csv文件加載時間
- 19. 加載和繪製csv文件
- 20. 加載CSV文件到使用MapReduce的
- 21. 從csv文件加載數據(iphone SDk)
- 22. 無法加載CSV文件在PostgreSQL
- 23. C++ Opencv加載CSV文件爲cv :: Mat
- 24. 無法加載Weka中的csv文件
- 25. 加載CSV文件拋出NullPointerException
- 26. 使用Javascript加載多個CSV文件
- 27. 通過Spark加載csv文件到HBase
- 28. 緩慢加載.CSV文件使用EPPLUS
- 29. 無法在weka中加載CSV文件
- 30. CSV加載數據不導入文件
我寫了一個groovified封裝OpenCSV,它被稱爲GroovyCSV,並且使Groovy中的csv更容易和習慣。它可在http:// xlson上找到。com/groovycsv/ – xlson 2011-09-29 12:25:17