Csv数据读取问题

时间:2018-01-13 09:58:11

标签: java csv parsing apache-spark

示例csv数据:

1,"Robert,Adams,Washington,US
2,"Madhu",Grant,Oregon,US
3,Mohan,Young,Texas,US

第一个条目包括两列1 RobertAdamsWashingtonUS

其余两个打印正确,在第一个条目应用程序中搜索关闭双引号,其余所有列都被视为一列

并显示封装令牌和分隔符之间的错误无效字符。应该正确阅读这个csv的方法是什么? (JAVA)

1 个答案:

答案 0 :(得分:1)

  

正确读取此csv的方法应该是什么。

正确的做法是拒绝它。这是畸形的。

  • 如果我们不允许引号中的行分隔符,则第1行的字段以双引号开头但没有结束双引号。

  • 如果我们允许在引号内使用行分隔符,则第一行继续到第二行,但2,"之后的字符是非法的。

(由您决定引号内的行分隔符是否对您的应用程序有意义。)

我不建议您尝试将此数据视为" good"。这显然是不正确的,接受错误的数据是正确的。

如果您要尝试继续解析,则应跳过第1行或第1行和第2行。

你添加了这个:

  

[CSV文件]非常大,我必须检查每一行

程序应该进行检查,而不是你。如果编码正确,程序在完成平凡的重复性任务时会更加可靠。

您可以通过在错误消息中包含行号来简化(手动)更正CSV中的错误。但更好的方法是以不允许错误进入的方式创建CSV文件。

  

如何以编程方式执行此操作?

使用现有的Java CSV阅读器库。有很多可供选择。