Setelah Anda menginstal paket ke dalam sistem Anda seperti yang dijelaskan dalam pertanyaan terkait
instal ekstensi dblink
ke dalam basis data Anda (yang Anda gunakan untuk menjalankan kode ini, db asing tidak memerlukannya):
CREATE EXTENSION dblink;
Anda dapat menemukan contoh kode di manual
.
Berikut adalah versi sederhana dari apa yang saya gunakan untuk menyalin data antara dbs:Pertama, buat SERVER ASING
CREATE SERVER mydb
FOREIGN DATA WRAPPER postgresql
OPTIONS (hostaddr '111.111.111.111',port '5432',dbname 'mydb');
FOREIGN DATA WRAPPER postgresql
sudah diinstal sebelumnya dalam kasus saya.
Kemudian buat fungsi yang membuka koneksi, menghapus data lama (opsional), mengambil data baru, menjalankan ANALYZE
dan menutup koneksi:
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;