我有一些大的(20GB +)CSV文件是双引号"我需要排序并输出到新文件的文本合格。
有些文件只按数字排列在一列上,而其他文件则分为两列,第一列是数字,第二列是字符串。
到目前为止,我已经尝试过Pythons csv sort,它失败了,因为它最终耗尽了内存。还有CoreUtils for Windows,虽然排序似乎没有处理文本限定符并给出不正确的结果。
是否有任何推荐/现有的解决方案可以处理这种类型?平台是Windows Server 2008 R2。
答案 0 :(得分:6)
这里需要一些外部排序技巧。我们的想法是创建较小的排序文件,然后逐个排序并保存在新文件中。这是一个快速摘要。
当你不断迭代块并且一直保持排序时,RESULT会慢慢增长。迭代结束后,此文件是最终排序的CSV。
您可以尝试多种算法变体以满足您的需求。查看https://en.wikipedia.org/wiki/External_sorting了解更多详情。
因此,我能够在一台8GB的计算机上在2-3小时内对40GB文件进行排序,该计算机还运行了其他几个进程。