Pour copier le contenu d'une table d'une base vers une autre, on peut utiliser l'ordre COPY.

Extraction des données
Syntaxe simplifiée

(voir syntaxe complète sur www.postgresql.org )

	COPY  <tableName> TO '<fileName>'  ( FORMAT binary );

Il est parfois nécessaire de qualifier le nom de la table avec son schéma.

Attention, le répertoire de destination doit être accessible. Pour éviter les problèmes de droits, il est préférable d'utiliser les répertoires 'Temp';

Exemple
	copy production.clients to 'C:\temp\production_clients.bin' ( FORMAT binary );
Importation des données

Après avoir transféré le fichier binaire contenant les données de la tables à transférer, et connecté sur notre base de destination, on exécute l'ordre COPY à partir de ce fichier.

Ici, le fichier à été copier sous un répertoire unix '/tmp';

Exemple
	copy test.clients from '/tmp/production_clients.bin' ( FORMAT binary );

Attention, la table doit être vide ou ne pas contenir les enregistrements importés, sinon l'erreur suivante sera affichée :

	ERROR:  duplicate key value violates unique constraint "...pk"
	DETAIL:  Key (name)=(value) already exists.
	CONTEXT:  COPY sys_font, line 1

Si vous souhaitez vider la table avant cette opération d'importation, sans la supprimer, on peux utiliser l'ordre TRUNCATE TABLE:

	TRUNCATE TABLE test.clients;