Je charge un fichier assez gigantesque dans une base de données postgresql. Pour ce faire, j'utilise d'abord split
le fichier pour obtenir des fichiers plus petits (30 Go chacun), puis je charge chaque fichier plus petit dans la base de données à l'aide de GNU Parallel
et psql copy
.
Le problème est qu'il faut environ 7 heures pour diviser le fichier, puis il commence à charger un fichier par cœur. Ce dont j'ai besoin est un moyen de dire split
d'imprimer le nom du fichier sur la sortie std chaque fois qu'il termine l'écriture d'un fichier afin que je puisse le diriger Parallel
et qu'il commence à charger les fichiers au moment où il a split
fini de l'écrire. Quelque chose comme ça:
split -l 50000000 2011.psv carga/2011_ | parallel ./carga_postgres.sh {}
J'ai lu les split
pages de manuel et je ne trouve rien. Existe-t-il un moyen de le faire avec split
ou tout autre outil?