Nadat u het pakket in uw systeem hebt geïnstalleerd zoals beschreven in de gerelateerde vraag
installeer de extensie dblink
in uw database (degene waarin u deze code uitvoert, de buitenlandse db heeft het niet nodig):
CREATE EXTENSION dblink;
U vindt codevoorbeelden in de handleiding
.
Hier is een eenvoudige versie van wat ik gebruik om gegevens te kopiëren tussen dbs:First, maak een BUITENLANDSE SERVER
CREATE SERVER mydb
FOREIGN DATA WRAPPER postgresql
OPTIONS (hostaddr '111.111.111.111',port '5432',dbname 'mydb');
FOREIGN DATA WRAPPER postgresql
was in mijn geval vooraf geïnstalleerd.
Maak vervolgens een functie die een verbinding opent, oude gegevens verwijdert (optioneel), nieuwe gegevens ophaalt, ANALYZE
uitvoert en verbreekt de verbinding:
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;