Po zainstalowaniu pakietu w systemie jak opisano szczegółowo w powiązanym pytaniu
zainstaluj rozszerzenie dblink
do Twojej bazy danych (w tej, w której uruchamiasz ten kod, obca baza danych nie potrzebuje tego):
CREATE EXTENSION dblink;
W instrukcji znajdziesz przykłady kodu
.
Oto prosta wersja tego, czego używam do kopiowania danych między dbs:First, utwórz ZAGRANICZNY SERWER
CREATE SERVER mydb
FOREIGN DATA WRAPPER postgresql
OPTIONS (hostaddr '111.111.111.111',port '5432',dbname 'mydb');
FOREIGN DATA WRAPPER postgresql
była preinstalowana w moim przypadku.
Następnie utwórz funkcję, która otwiera połączenie, usuwa stare dane (opcjonalnie), pobiera nowe dane, uruchamia ANALYZE
i zamyka połączenie:
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;