Après avoir installé le package sur votre système comme détaillé dans la question connexe
installez l'extension dblink
dans votre base de données (celle dans laquelle vous exécutez ce code, la base de données étrangère n'en a pas besoin) :
CREATE EXTENSION dblink;
Vous pouvez trouver des exemples de code dans le manuel
.
Voici une version simple de ce que j'utilise pour copier des données entre les bases de données :d'abord, créer un SERVEUR ÉTRANGER
CREATE SERVER mydb
FOREIGN DATA WRAPPER postgresql
OPTIONS (hostaddr '111.111.111.111',port '5432',dbname 'mydb');
FOREIGN DATA WRAPPER postgresql
était pré-installé dans mon cas.
Ensuite, créez une fonction qui ouvre une connexion, supprime les anciennes données (facultatif), récupère les nouvelles données, exécute ANALYZE
et ferme la connexion :
CREATE OR REPLACE FUNCTION f_tbl_sync()
RETURNS text AS
$BODY$
SELECT dblink_connect('mydb'); -- USER MAPPING for postgres, PW in .pgpass
TRUNCATE tbl; -- optional
INSERT INTO tbl
SELECT * FROM dblink(
'SELECT tbl_id, x, y
FROM tbl
ORDER BY tbl_id')
AS b(
tbl_id int
,x int
,y int)
ANALYZE tbl;
SELECT dblink_disconnect();
$BODY$
LANGUAGE sql VOLATILE;