J'utilise scala 2.7.7, et je voulais analyser le fichier CSV et stocker les données dans la base de données SQLite. J'ai fini par utiliser OpenCSV Java Library pour analyser le fichier CSV et utiliser la bibliothèque sqlitejdbc.processus csv dans scala
L'utilisation de ces bibliothèques java fait mon code scala est presque identique à celui de code Java (sans points-virgules et val/var)
Comme je traite avec des objets java, je ne peux pas utiliser la liste scala, carte , etc, sauf si je fais la conversion scala2java ou mise à niveau vers scala 2.8
Y a-t-il un moyen de simplifier mon code en utilisant des bits scala que je ne connais pas?
val filename = "file.csv";
val reader = new CSVReader(new FileReader(filename))
var aLine = new Array[String](10)
var lastSymbol = ""
while((aLine = reader.readNext()) != null) {
if(aLine != null) {
val symbol = aLine(0)
if(!symbol.equals(lastSymbol)) {
try {
val rs = stat.executeQuery("select name from sqlite_master where name='" + symbol + "';")
if(!rs.next()) {
stat.executeUpdate("drop table if exists '" + symbol + "';")
stat.executeUpdate("create table '" + symbol + "' (symbol,data,open,high,low,close,vol);")
}
}
catch {
case sqle : java.sql.SQLException =>
println(sqle)
}
lastSymbol = symbol
}
val prep = conn.prepareStatement("insert into '" + symbol + "' values (?,?,?,?,?,?,?);")
prep.setString(1, aLine(0)) //symbol
prep.setString(2, aLine(1)) //date
prep.setString(3, aLine(2)) //open
prep.setString(4, aLine(3)) //high
prep.setString(5, aLine(4)) //low
prep.setString(6, aLine(5)) //close
prep.setString(7, aLine(6)) //vol
prep.addBatch()
prep.executeBatch()
}
}
conn.close()
http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/base/Splitter.html dans la section http://code.google.com com/p/guava-libraries/pour une meilleure fonction de partage. string.split a quelques gotchas. – BenjaminJackman
Le fractionnement sur des virgules ne fonctionnera pas si l'un des champs contient des virgules, par ex. "San Jose, Californie", "SomeOtherData" –
Source.fromFile ("stock.csv") – jcalfee314