Dopo aver installato il pacchetto nel tuo sistema come dettagliato nella relativa domanda
installa l'estensione dblink
nel tuo database (quello in cui stai eseguendo questo codice, il db esterno non ne ha bisogno):
CREATE EXTENSION dblink;
Puoi trovare esempi di codice nel manuale
.
Ecco una versione semplice di ciò che uso per copiare i dati tra dbs:Primo, crea un SERVER ESTERO
CREATE SERVER mydb
FOREIGN DATA WRAPPER postgresql
OPTIONS (hostaddr '111.111.111.111',port '5432',dbname 'mydb');
FOREIGN DATA WRAPPER postgresql
era preinstallato nel mio caso.
Quindi crea una funzione che apre una connessione, rimuove i vecchi dati (facoltativo), recupera i nuovi dati, esegue ANALYZE
e chiude la connessione:
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;