gpt4 book ai didi

awk - 将日期时间附加到 6 亿行文件中的每一行的末尾

转载 作者:行者123 更新时间:2023-12-04 22:56:20 25 4
gpt4 key购买 nike

我有一个 6.8 亿行 (19gig) 的文件,我需要将日期时间附加到每一行。我每晚都会收到这个文件,我必须将处理它的时间添加到每一行的末尾。我尝试了很多方法来做到这一点,包括 sed/awk 并将其加载到 SQL 数据库中,最后一列默认为当前时间戳。

我想知道是否有一种快速的方法来做到这一点?到目前为止,我最快的方法需要两个小时,但鉴于此文件中信息的紧迫性,这还不够快。它是一个平面 CSV 文件。

编辑1:

这是我到目前为止所做的:

awk -v date="$(date +"%Y-%m-%d %r")" '{ print $0","date}' lrn.ae.txt > testoutput.txt

时间 = 117 分钟
perl -ne 'chomp; printf "%s.pdf\n", $_' EXPORT.txt > testoutput.txt

时间 = 135 分钟
mysql load data local infile '/tmp/input.txt' into table testoutput

时间 = 211 分钟

最佳答案

您没有指定每行的时间戳是否必须不同。 “开始处理”时间是否足够?

如果是这样,一个简单的解决方案是使用 paste命令,带有预先生成的时间戳文件,长度与您正在处理的文件完全相同。那么就paste整个事情在一起。此外,如果整个过程受 I/O 限制,正如其他人所推测的那样,那么在带有 SSD 驱动器的机器上运行它可能有助于加快过程。

我刚刚在一个 600 万行的文件(大约是你的 1%)上进行了本地尝试,它实际上能够在不到一秒的时间内完成,在 Macbook Pro 上,使用 SSD 驱动器。

 ~> date; time paste file1.txt timestamps.txt > final.txt; date
Mon Jun 5 10:57:49 MDT 2017

real 0m0.944s
user 0m0.680s
sys 0m0.222s
Mon Jun 5 10:57:49 MDT 2017

我现在要尝试一个大约 5 亿行的文件,看看它的价格如何。

更新:

好的,结果出来了。与您的解决方案相比,粘贴速度非常快,处理整个事情总共花了 90 多秒,600M 行简单数据。
~> wc -l huge.txt 
600000000 huge.txt
~> wc -l hugetimestamps.txt
600000000 hugetimestamps.txt
~> date; time paste huge.txt hugetimestamps.txt > final.txt; date
Mon Jun 5 11:09:11 MDT 2017

real 1m35.652s
user 1m8.352s
sys 0m22.643s
Mon Jun 5 11:10:47 MDT 2017

您仍然需要提前准备时间戳文件,但这是一个微不足道的 bash 循环。我在不到一分钟的时间内创建了我的。

关于awk - 将日期时间附加到 6 亿行文件中的每一行的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44372588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com