【发布时间】:2018-05-09 18:18:58
【问题描述】:
我总是在我的 java 程序中使用 Univocity 解析器来比较 csv 文件。它工作得很好,而且速度更快。
但问题是,这一次我试图解析两个不同的大容量 csv 文件,并在新的 csv 文件中打印差异,
查看其中一个作者示例,我在将 file1 读入列表然后转换为映射后尝试使用 processFile,但在解析时仍然出现错误。
以下是我的示例输入和预期输出文件。
输入 - 文件 1
"h1","h2","h3","h4","h5"
"00000","US","9503.00.0089","USA","9503.0089"
"","EU","9503.00.7000","EUROPEAN UNION","9503.00.7000"
"#1200","US","5601.22.0010","USA","5601.22.0010"
"0180691","US","9503.00.0073","USA","9503.00.0073"
“DRTY01”,”CA”,”9603.01.0088”,”CAN”,”9603.01.0088”
输入 - 文件 2
"h1","h2","h3","h6","h7","h8","h9","h10",h11
"018890","US","","2015","101","1","1","All",””
"00000","US","9503.00.0090","1986","101","1","1","All","9503.00.0090"
"0180691","US","9503.00.0073","2019","101","1","1","All","9503.00.0073”
“DRTY01”,”CA”,”9603.01.0087”,”2002”,”102”,”1”,”2”,”CA”, “9603.01.0087”
在 file1 和 file2 中选择 h1, h2 常用值,然后比较 file1 的 h3 和 file2 的 h3,如果两个文件 h3 不相等,那么我想打印“h1”、“h4”、“h10”、“h5” , ”h11”,”h6”,”h7”,”h8”,”h9” 到文件3
输出 - 文件 3
“h1”,”h4”,” h10”,”h5”, ”h11”,”h6”,”h7”,”h8”,”h9”
"00000","USA”,”All”,”9503.00.0089”,”9503.00.0090”, "1986","101","1","1"
"DRTY01”,“CAN”,”CA”,”9603.01.0088”,“9603.01.0087”,”2002”,”102”,”1”,”2”
【问题讨论】:
-
我无法按照您想要的比较逻辑..请您再解释一下...
-
检查两个文件在字段 h1、h2 中的公共值,并将 file1 的 h3 与 file2 的 h3 进行比较,如果 h3 不相等,则将所需的标题和值写入新的 CSV 文件。
-
file1 中 h1 和 h2 的每一行将与 file2 中 h1 和 h2 的每一行进行比较。如果它们相同,则检查 file1 和 file2 的 h3 列。如果 h3 列相同,则“h1”、“h4”、“h10”、“h5”、“h11”、“h6”、“h7”、“h8”、“h9” 到一个新文件,否则什么也不做。是这个吗?
-
是的,完全是@utkarsh31
-
h1 和 h2 值是否唯一且不为空?
标签: java csv parsing univocity