Ich lade eine ziemlich gigantische Datei in eine Postgresql-Datenbank. Dazu verwende ich zuerst split
in der Datei kleinere Dateien (jeweils 30 GB) und lade dann jede kleinere Datei mit GNU Parallel
und in die Datenbank psql copy
.
Das Problem ist, dass das Teilen der Datei ungefähr 7 Stunden dauert und dann eine Datei pro Kern geladen wird. Was ich brauche, ist eine Möglichkeit, split
den Dateinamen jedes Mal, wenn er mit dem Schreiben einer Datei fertig ist, in die Standardausgabe zu drucken, damit ich sie weiterleiten kann, Parallel
und er beginnt mit dem Laden der Dateien, wenn er split
fertig geschrieben ist. Etwas wie das:
split -l 50000000 2011.psv carga/2011_ | parallel ./carga_postgres.sh {}
Ich habe die split
Manpages gelesen und kann nichts finden. Gibt es eine Möglichkeit, dies mit split
oder einem anderen Tool zu tun ?