No es necesario crear un archivo intermedio. Puedes hacer
pg_dump -C -h localhost -U localuser dbname | psql -h remotehost -U remoteuser dbname
o
pg_dump -C -h remotehost -U remoteuser dbname | psql -h localhost -U localuser dbname
usando psql o pg_dump para conectarse a un host remoto.
Con una gran base de datos o una conexión lenta, volcar un archivo y transferirlo comprimido puede ser más rápido.
Como dijo Kornel, no es necesario volcar a un archivo intermedio, si desea trabajar comprimido, puede usar un túnel comprimido
pg_dump -C dbname | bzip2 | ssh example@sqldat.com "bunzip2 | psql dbname"
o
pg_dump -C dbname | ssh -C example@sqldat.com "psql dbname"
pero esta solución también requiere obtener una sesión en ambos extremos.
pg_dump es para realizar copias de seguridad y psql es para restaurar. Entonces, el primer comando en esta respuesta es copiar de local a remoto y el segundo es de remoto a local . Más -> https://www.postgresql.org/docs/9.6/app-pgdump.html