首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何比较大型csv文件中的差异

如何比较大型csv文件中的差异
EN

Stack Overflow用户
提问于 2012-05-17 19:30:11
回答 6查看 12.2K关注 0票数 5

我必须比较包含在Windows中的两个大小为2-3 GB的csv文件。

我尝试将第一个放在HashMap中,以便将其与第二个比较,但结果(如预期的)是非常高的内存占用。

目标是获取另一个文件中的差异。

这些线可能会以不同的顺序出现,也可能会漏掉。

有什么建议吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-05-17 19:52:07

假设您希望通过编程在Java中这样做,答案是不同的。

这两个文件都订好了吗?如果是这样,则不需要读取整个文件,只需从两个文件的开头开始,并且

  1. 如果条目匹配,则在两个文件中推进“当前”行。
  2. 如果条目不匹配,则确定哪个文件的行将放在第一位,显示该行,并在该文件中推进当前行。

如果您没有订购文件,那么您也许可以在diff之前订购这些文件。同样,由于您需要一个低内存解决方案,所以不要读取整个文件来排序它。将文件分割成可管理的块,然后对每个块进行排序。然后使用插入排序来组合块。

票数 3
EN

Stack Overflow用户

发布于 2012-05-17 19:47:50

unix命令diff可以进行精确匹配。

您还可以使用-b标志运行它,以忽略空格的差异。

票数 2
EN

Stack Overflow用户

发布于 2015-05-20 10:37:31

使用单级解析器,因为它提供了速度最快的Java解析器。您可以处理高达100 GB的文件,没有任何问题,而且速度非常快。

为了比较大型CSV文件,我建议您使用自己的RowProcessor实现,并将其包装到ConcurrentRowProcessor中。

披露:我是这个图书馆的作者。它是开源和免费的(ApacheV2.0许可证)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10642298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档