scala解析csv文件写入mysql_java – 在scala中处理csv

本文介绍如何在Scala 2.7.7环境中利用OpenCSV库解析CSV文件,并将数据存储到SQLite数据库中。作者遇到的问题是,由于使用了Java库,代码风格接近Java而非Scala,且无法直接使用Scala的数据结构。文章展示了读取CSV文件,检查数据库中是否存在表,创建新表,以及插入数据的步骤。虽然代码目前没有充分利用Scala特性,但探讨了在 Scala 中简化Java风格代码的可能性。
摘要由CSDN通过智能技术生成

我正在使用

scala 2.7.7,并希望解析CSV文件并将数据存储在SQLite数据库中.

我最终使用OpenCSV java库来解析CSV文件,并使用sqlitejdbc库.

使用这些java库使我的scala代码看起来几乎与Java代码相同(没有分号和val / var)

由于我正在处理java对象,我不能使用scala list,map等,除非我做scala2java转换或升级到scala 2.8

有没有办法可以使用我不知道的scala位进一步简化我的代码?

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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值