【发布时间】:2013-02-15 04:22:28
【问题描述】:
我正在将一个非常巨大的文件加载到 postgresql 数据库中。为此,我首先在文件中使用split 来获取较小的文件(每个30Gb),然后使用GNU Parallel 和psql copy 将每个较小的文件加载到数据库中。
问题是拆分文件大约需要 7 个小时,然后它开始为每个内核加载一个文件。我需要一种方法来告诉split 每次完成写入文件时将文件名打印到std 输出,这样我就可以将它通过管道传输到Parallel 并在split 完成写入时开始加载文件.像这样的:
split -l 50000000 2011.psv carga/2011_ | parallel ./carga_postgres.sh {}
我已阅读 split 手册页,但找不到任何内容。有没有办法使用split 或任何其他工具来做到这一点?
【问题讨论】:
-
split --verbose 可能吗?
-
@KevinDTimm 详细选项在开始创建文件时打印,而不是在完成时打印
-
因此,当它创建文件 X2 时,开始解析文件 X1 :)
-
@KevinDTimm 但我想避免需要额外的脚本来做到这一点。
标签: bash split gnu-parallel