algorithm - 从大文件中删除重复项

标签 algorithm file-io large-files

我们有大量数据,我们想对它们执行一些操作。删除重复项是主要操作之一。

例如

a,me,123,2631272164
yrw,wq,1237,123712,126128361
yrw,dsfswq,1323237,12xcvcx3712,1sd26128361

这是一个文件中的三个条目,我们要在第一列的基础上删除重复项。因此,应删除第 3 行。每行可能有不同数量的列,但我们感兴趣的列将始终存在。

内存操作看起来不可行。

另一种选择是将数据存储在数据库中并从中删除重复项,但这又不是一项简单的任务。 我应该遵循什么设计来将数据转储到数据库并删除重复项?

我假设人们一定遇到过这样的问题并解决了它。

我们通常如何解决这个问题?

PS:请将此视为现实生活中的问题而不是面试问题;)

最佳答案

如果键的数量也无法加载到内存中,则必须进行稳定(保留顺序)外部合并排序对数据进行排序,然后进行线性扫描以进行重复删除。或者您可以修改外部合并排序以在合并排序运行时提供重复消除。

我想因为这不是面试问题或者效率/优雅似乎不是问题(?)。编写一个 hack python 脚本,创建一个以第一个字段作为主键的表。解析这个文件,只将记录插入数据库,将插入包装到 try except 语句中。然后对表进行select *,解析数据,逐行写回文件。

关于algorithm - 从大文件中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10361007/

相关文章:

go - 使用 xml.NewDecoder(xmlFile) 在 Go/Golang 中解析大型 XML 文件时如何实现进度计数器?

java - 在 Java 中打开一个大文件非常慢

c++ - 实现质数计数器

c - 文件处理扰乱了对称的客户端-服务器通信

C 相当于 Fortran 名单

linux - 在具有相似文件的目录中进行尾部操作

ruby - Sax 从 S3 解析大文件

algorithm - VBA 中的双重求和

c++ - 如果边未按权重排序顺序插入双端队列中,0-1 BFS 是否会产生正确的答案?

algorithm - 如何解决机器学习挑战?