如何比较非常大的 csv 文件中的差异

ric*_*nal 5 java csv large-files

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

我试图将第一个放在 HashMap 中以将其与第二个进行比较,但结果(如预期)是非常高的内存消耗。

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

这些行可能以不同的顺序出现,也可能会被遗漏。

有什么建议吗?

Edw*_*uck 4

假设您希望通过编程在 Java 中执行此操作,答案会有所不同。

这两个文件都已订购吗?如果是这样,那么您不需要读取整个文件,只需从两个文件的开头开始,然后

  1. 如果条目匹配,则前进两个文件中的“当前”行。
  2. 如果条目不匹配,则确定哪个文件的行首先出现,显示该行,然后前进该文件中的当前行。

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