Depois de instalar o pacote em seu sistema conforme detalhado na pergunta relacionada instale a extensão
dblink
em seu banco de dados (aquele em que você está executando este código, o banco de dados externo não precisa):CREATE EXTENSION dblink;
Você pode encontrar exemplos de código no manual .
Aqui está uma versão simples do que eu uso para copiar dados entre dbs:Primeiro, criar um SERVIDOR ESTRANGEIRO
CREATE SERVER mydb
FOREIGN DATA WRAPPER postgresql
OPTIONS (hostaddr '111.111.111.111',port '5432',dbname 'mydb');
FOREIGN DATA WRAPPER postgresql
foi pré-instalado no meu caso.Em seguida, crie uma função que abre uma conexão, remove dados antigos (opcional), busca novos dados, executa
ANALYZE
e fecha a conexão: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;