重复删除多个大文件

时间:2016-05-13 19:01:17

标签: python postgresql sqlite word-list bigdata

我至少有500个不同的文件包含单词(每个单词在单独的行中)。问题是这些列表很长(总共5bln记录),我有问题使每个列表都是唯一的。我想保留文件名,但同时在每个文件中都有唯一的条目(没有合并等)。

到目前为止,我尝试了不同的程序,如app.merge和ccr,DB与表中的唯一列(postgresql和sqlite)没有运气。无法找到可靠的解决方案。你有什么建议去做?

编辑:我试图阻止任何文件使用常用字词。为了更好地解释它,让我们说我有3个文件包含以下内容:

f1:
word1
other
something

f2:
word2
word1
other

f3:
word1
something
myentry

因此,我希望看到:

f1:
word1
other
something

f2:
word2

f3:
myentry

当然文件本身要大得多(以此为例:http://md5decrypt.net/Telecharger-wordlist/Md5decrypt-awesome-wordlist.7z)。回答问题'到目前为止我测试了什么' - 好吧,这是我现在正在处理的代码:https://pastebin.com/Y8HutakU,这是结果(在运行1小时后停止):https://pastebin.com/tknve7qA。我知道代码远非最佳,并且在输出中清晰可见,随着DB的增长,DB的下一次插入需要越来越长的时间。我正在尝试使用数据库,因为我认为将所有单词都设置为唯一,保留文件名并使用比较方法以供将来使另外还有关于SQLite性能的好文章:

1 个答案:

答案 0 :(得分:0)

如果您使用的是Linux系统,则可以使用标准的命令行工具。

SELECT 
    column1
    ,column2
    ,count(column3) 
from (
select column1, column2, column3 from table1
union all
select column1,column2, null as column3
    from (select distinct column1 from table1 ) all_c1
    cross join ( select distinct column2 from table1) all_c2
)t group by column1, column2;