我正在编写一个java程序来从csv文件中读取数据并将其存储在数据库中。 我有点困惑。 如果我打开相应的csv文件,它将打开microsoft excel。 因此,在阅读此csv文件时,我应该根据','或';'阅读(比如在csv文件中), 或者我应该像在excel文件中那样阅读(逐列)?
String cvsSplitBy = ",";
br = new BufferedReader(new FileReader(csvFile));
while((line = br.readLine()) != null){
String[] row = line.split(cvsSplitBy);
String value1 = row[1];
}
我做得对吗?或者我应该改变它,阅读时尚?
答案 0 :(得分:1)
CSV文件基本上是文本文件。 MS Excel可以读取和写入CSV文件,它使用CSV文件中的分隔符(如,或;)以表格的形式进行显示。但是使用专用解析器/流读取CSV文件是有利的,因为CSV不仅仅是带分隔符的文本文件。
例如如果';'是分隔符,那么带有','的字符串不应该分成两行。此外,如果有字符串作为数据,(例如,如果列数据是“Fun; Enjoy” - 包括双引号),那么您不希望该字符串在两个不同的列中被拆分为“Fun and Enjoy”。只有使用CSV解析器/流(您可以根据需要创建的自定义类或已经存在的自定义类)才能实现这种复杂性。
答案 1 :(得分:0)
你做错了。您的代码仅适用于CSV的一小部分
尝试使用下一个文件
First value, "Second value", "Third, but not last", "and you will be surprised
how agile CSV is"
此数据包含两行,但只包含一行CSV行。第三列中的值包含逗号。最后一个值由两行组成。
所以你最好使用真正的解析器,如果你还没准备好处理所有这些情况(可能还有更多)
答案 2 :(得分:0)
CSV可以被任何东西分开,最流行的是逗号,但它不一定是昏迷。 CSV文件是一个矩阵(或表),其中列由给定的分隔符(通常是逗号)分隔。
例如SalesForce sample csv is a comma。
但是,如果您尝试导入文件,请选择excel:
, ; | \t
在上图中,您可以看到excel导入向导中的可用分隔符