对文本文件进行排序,记录超过100,000,000条

时间:2009-12-20 07:43:12

标签: algorithm sorting

我有一个5gig的文本文件,需要按字母顺序排序 什么是最好的算法?

约束:

速度 - 尽可能快

内存 - 运行Windows XP的1 Gig Ram的Pc

6 个答案:

答案 0 :(得分:11)

我通常使用sort linux命令对文本文件> 2GB进行排序。通常需要15 - 30秒,具体取决于服务器负载。

只要这样做,就不会想你想的那么久。

更新由于您使用的是Windows XP,因此可以在UnxUtils中获取sort命令。我使用的那个可能比linux版本更多,而且速度同样快。

巨大文件的瓶颈真的是磁盘速度..我的服务器上面有一个快速的sata raid。如果您的计算机是台式机(或笔记本电脑),则7200 RPM(或5400)RPM IDE驱动器将为作业添加几分钟。

答案 1 :(得分:5)

对于文本文件sort,至少Linux和其他版本的GNU Coreutils版本的工作速度非常快。

查看--buffer-size及相关选项,如果--temporary-directory目录太小,请设置/tmp

或者,如果您真的担心可能需要多长时间,可以将文件拆分为较小的块,然后单独排序,然后将它们合并在一起(使用sort --merge)。对每个块进行排序可以在不同的系统上并行完成。

答案 2 :(得分:1)

我想说的是拿一小部分数据然后尝试一下,看看哪种方法效果最好,然后再去做。 This article might help you get started

答案 3 :(得分:1)

排序的参数是什么?你有时间限制或空间限制吗?文件已经接近订购了多少?你必须一次性完成吗?

答案 4 :(得分:0)

合并排序是您最好的选择。

答案 5 :(得分:0)

如何使用批量插入命令将数据导入SQL Server?

link text

这可以非常快速地将数据导入SQL Server,然后允许您根据导入的数据执行各种有效的SQL排序。

您还可以使用SQL Server SSIS将其设置为自动化任务。