Vous n'avez pas besoin de créer une table temporaire pour COPY TO
. Toute requête peut être la source depuis PostgreSQL 8.2 .
COPY (SELECT * FROM view1) TO '/var/lib/postgres/myfile1.csv';
Lisez le manuel sur COPY . Créez les tables nécessaires localement avec
CREATE table tbl1 AS
SELECT * FROM view1
LIMIT 0; -- no data, just the schema.
Copiez les instructions DDL et créez toutes les tables dans la base de données cible. pgAdmin est une interface graphique pratique pour le faire. Supprimez à nouveau les tables vides dans la base de données source. Charger des données avec
COPY tbl1 FROM '/var/lib/postgres/myfile1.csv';
Vider/restaurer comme @wildplasser le décrit, est une autre façon.
Pour un transfert unique, l'une de ces méthodes est recommandée. Pour une application répétée, dblink ou SQL/MED (Gestion des données externes) peut être plus approprié.