Sto caricando un file piuttosto gigantesco in un database postgresql. Per fare ciò uso prima split
nel file per ottenere file più piccoli (30 Gb ciascuno) e quindi carico ogni file più piccolo nel database usando GNU Parallel
e psql copy
.
Il problema è che sono necessarie circa 7 ore per dividere il file e quindi inizia a caricare un file per core. Quello di cui ho bisogno è un modo per dire split
di stampare il nome del file sull'output std ogni volta che finisce di scrivere un file in modo da poterlo reindirizzare Parallel
e inizia a caricare i file nel momento in cui split
lo scrivo. Qualcosa come questo:
split -l 50000000 2011.psv carga/2011_ | parallel ./carga_postgres.sh {}
Ho letto le split
pagine man e non riesco a trovare nulla. C'è un modo per farlo con split
o con qualsiasi altro strumento?