Nachdem Sie das Paket in Ihrem System wie beschrieben installiert haben in der zugehörigen Frage
Installieren Sie die Erweiterung dblink
in Ihre Datenbank (diejenige, in der Sie diesen Code ausführen, die fremde Datenbank benötigt ihn nicht):
CREATE EXTENSION dblink;
Sie finden Codebeispiele im Handbuch
.
Hier ist eine einfache Version dessen, was ich zum Kopieren von Daten zwischen Datenbanken verwende:Zuerst fremden Server erstellen
CREATE SERVER mydb
FOREIGN DATA WRAPPER postgresql
OPTIONS (hostaddr '111.111.111.111',port '5432',dbname 'mydb');
FOREIGN DATA WRAPPER postgresql
war in meinem Fall vorinstalliert.
Erstellen Sie dann eine Funktion, die eine Verbindung öffnet, alte Daten entfernt (optional), neue Daten holt, ANALYZE
ausführt und schließt die Verbindung:
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;