【发布时间】:2011-04-17 23:46:29
【问题描述】:
您好,
我从以前的团队接手并编写处理 csv 文件的 ETL 作业。我在 ubuntu 上使用了 shell 脚本和 perl 的组合。 csv 文件很大;它们以压缩档案的形式到达。解压后,很多都超过 30Gb - 是的,这是一个 G
传统进程是在 cron 上运行的批处理作业,它会完全解压缩每个文件,读取文件的第一行并将其复制到配置文件中,然后重新压缩整个文件。有时这需要很多小时的处理时间,但没有任何好处。
您能否建议一种仅从压缩存档中的每个文件中提取第一行(或前几行)而不完全解压缩存档的方法?
【问题讨论】:
-
我知道这不是答案,但有信心,至少使用 gzip 存档你可以做到,即使只是 vi 也会读入 gzip。对于 gzip,它是 zcat 和 zgrep 程序,不过我不知道它们是否适用于常规 zip。
-
为什么作业要重新压缩文件?为什么不能只使用原始的 zip 文件?
标签: perl parsing shell zip etl