Eu tinha que fazer exatamente isso, então resolvi postar a receita aqui. Isso pressupõe que ambos os bancos de dados estejam no mesmo servidor.
Primeiro, copie a tabela do banco de dados antigo para o novo banco de dados. Na linha de comando:
pg_dump -U postgres -t <old_table> <old_database> | psql -U postgres -d <new_database>
Em seguida, conceda permissões da tabela copiada ao usuário do novo banco de dados. Entre no psql:
psql -U postgres -d <new_database>
ALTER TABLE <old_table> OWNER TO <new_user>;
\q
Neste ponto, sua tabela copiada em seu novo banco de dados ainda tem o nome
<old_table>
do seu banco de dados antigo. Supondo que você queira mover os dados para outro lugar, digamos para <new_table>
, você pode simplesmente usar consultas SQL regulares:INSERT INTO <new_table> (field1, field2, field3)
SELECT field1, field2, field3 from <old_table>;
Feito!