从1 GB以上的大型.txt文件中删除重复行的最佳方法是什么?
因为删除一个接一个的重复项很简单,我们可以将此问题转换为仅排序文件。
假设我们无法将整个数据加载到RAM ,因为它的大小。
我只是等着从一个唯一的索引字段(我先前将文件行加载到表格)中检索SQL表中的所有记录并且想知道,确实存在加速它的方法。
答案 0 :(得分:2)
您可以尝试bloom filter。虽然你可能会得到一些误报(虽然你可以以更多的处理成本任意接近0%)但它应该非常快,因为你不需要比较甚至对每行进行log(n)搜索看到。
答案 1 :(得分:-1)
一次读取两个字节的文件。如果这两个字节是一个新行(\ r \ n),那么标记你有一个新行。现在阅读接下来的两行,如果是新行,则保留标志但删除该新行(当我说删除时,意味着省略将新行写入临时文件)。现在,如果您遇到另一个新行,它将再次删除,但如果没有,则重置该标志。然后将临时文件的内容复制到原文中,然后就完成了。
如果您正在寻找单个(\ n),您也可以一次读取1个字节。或者您可以一次读取1 KB的文件,然后在内存中执行这些操作(这会更快)。