Você não precisa criar uma tabela temporária para
COPY TO
. Qualquer consulta pode ser a fonte desde o PostgreSQL 8.2 . COPY (SELECT * FROM view1) TO '/var/lib/postgres/myfile1.csv';
Leia o manual sobre COPY . Crie as tabelas necessárias localmente com
CREATE table tbl1 AS
SELECT * FROM view1
LIMIT 0; -- no data, just the schema.
Copie as instruções DDL e crie todas as tabelas no banco de dados de destino. pgAdmin é uma GUI conveniente para fazer isso. Exclua as tabelas vazias no banco de dados de origem novamente. Carregar dados com
COPY tbl1 FROM '/var/lib/postgres/myfile1.csv';
Despejar/restaurar como @wildplasser descreve, é outra maneira.
Para uma transferência única, um desses métodos é aconselhável. Para aplicações repetidas, dblink ou SQL/MED (Gerenciamento de dados externos) pode ser mais adequado.