在 UNIX / VMS 中对非常大的分隔文本文件进行排序

在 UNIX / VMS 中对非常大的分隔文本文件进行排序

我要整理一下非常大的分隔文本文件,比如说 250Mb(或者一堆大于或小于 250Mb 的文件)。它有 37 个字段,我需要按 5 个字段对其进行排序,例如第 1、第 4、第 5、第 6、第 7 个字段。在 Unix / VMS 下,我有没有一个好的选择可以快速完成此操作?我会写 COBOL 程序。
现在我尝试使用下面的命令对它们进行排序,但它已经运行了很长时间,但还没有完成。

谢谢。

我使用的命令:time sort -t ',' -o sorted.txt +0 -1 +4 -5 +5 -6 +6 -7 +22 -23 *.DAT_gprscdr_ftpd

答案1

也许这个问题确实应该在另一个 SE 网站上提出,但这是我对这个问题的看法。

1)您在问题中提供的基本排序速度不够快吗?它应该有多快?我两年前的台式机在 21 秒内对 270MB 的 Apache 访问日志文件进行了排序。

2)如果这还不够快,您可以尝试先对每个文件进行单独排序,然后使用“sort -m”合并它们

3)如果速度不够快,并且您有多个 CPU/核心,则使用以下方法并行化(sp?)GNU 并行

4)如果仍然不够快,并且你有更多的机器可用,那么在多台机器上并行化排序过程GNU 并行

答案2

您可以将数据加载到 MySQL 数据库中(LOAD 命令)并执行您想要的操作

相关内容