--pipeを使用します。
cat 2011.psv | parallel --pipe -l 50000000 ./carga_postgres.sh
ファイルからではなくstdinから読み取るには./carga_postgres.shが必要であり、GNU Parallelバージョン<20130222の場合は低速です。
正確に50000000行が必要ない場合は、-blockの方が高速です。
cat 2011.psv | parallel --pipe --block 500M ./carga_postgres.sh
これにより、約500MBに分割されたチャンクが\ nに渡されます。
./carga_postgres.shに何が含まれているのかわかりませんが、ユーザー名とパスワードを含むpsqlが含まれていると思います。その場合は、GNU SQL(GNU Parallelの一部)を使用することをお勧めします。
cat 2011.psv | parallel --pipe --block 500M sql pg://user:pass@host/db
主な利点は、一時ファイルを保存する必要がなく、すべてをメモリ/パイプに保持できることです。
./carga_postgres.shがstdinから読み取ることができないが、ファイルから読み取る必要がある場合は、ファイルに保存できます。
cat 2011.psv | parallel --pipe --block 500M "cat > {#}; ./carga_postgres.sh {#}"
多くの場合、大きなジョブは途中で失敗します。GNU Parallelは失敗したジョブを再実行することであなたを助けることができます:
cat 2011.psv | parallel --pipe --block 500M --joblog my_log --resume-failed "cat > {#}; ./carga_postgres.sh {#}"
これが失敗した場合は、上記を再実行できます。すでに正常に処理されているブロックはスキップされます。