【发布时间】:2014-06-18 20:47:53
【问题描述】:
我正在尝试将一些数据集解析到数据库中。我正在使用的 CSV 文件中的数据用逗号分隔。但是,有些数据包含在引号中,其中包括作为该字符串一部分的逗号。鉴于此障碍,我如何逐步遍历每一行数据并解析出每个数据条目?
编辑:CSV 解析器不是一个选项,因为该程序将用于非 csv 文件。我正在尝试最小化外部库。
我发现了这个问题,因为我这里的代码只会解析引号:
while(bufferinput.hasNext()){
nextline = bufferinput.nextLine();
dataArray = nextline.split(",");
for(i = 0; i<colNum;i++){
//Try-Catch to search through dataArray and push it into sqlData arraylist.
try{
if(!dataArray[i].toString().isEmpty()){
sqlData.add(dataArray[i].toString());
}
//else if used to find empty cells between non empty cells (Have to test to see if opposite of if-statement works)
else if(dataArray[i].toString().equals("")){
sqlData.add(null);
}
}
//Catch is necessary to find the cells not at the end of the row in a text file.
catch(ArrayIndexOutOfBoundsException e){
sqlData.add(null);
}
}
}
此类数据的示例类似于 ,,"Ontario, Canada",xxxxx.....
位置是最大的原因,因为地址包含逗号。
【问题讨论】:
-
使用CSV parser?
-
除了上面链接的 Apache Commons CSV 解析器,它还没有稳定发布(因此可能还没有那么丰富的功能),还有其他各种开源和许可已获得许可的 Java CSV 解析器库。
-
@GriffeyDog 我不能,因为我正在使用这个程序来解析其他 CSV 文件。
-
@user3521471 这些非 CSV 文件是否也会通过您发布的代码运行?
-
@ajp15243 是的,他们这样做了