Sau khi bạn đã cài đặt gói vào hệ thống của mình, hãy chi tiết trong câu hỏi liên quan
cài đặt tiện ích mở rộng dblink
vào cơ sở dữ liệu của bạn (cái mà bạn đang chạy mã này, db nước ngoài không cần nó):
CREATE EXTENSION dblink;
Bạn có thể tìm thấy ví dụ về mã trong sách hướng dẫn
.
Đây là phiên bản đơn giản của những gì tôi sử dụng để sao chép dữ liệu giữa các dbs:Đầu tiên, tạo MÁY CHỦ NƯỚC NGOÀI
CREATE SERVER mydb
FOREIGN DATA WRAPPER postgresql
OPTIONS (hostaddr '111.111.111.111',port '5432',dbname 'mydb');
FOREIGN DATA WRAPPER postgresql
đã được cài đặt sẵn trong trường hợp của tôi.
Sau đó, tạo chức năng mở kết nối, xóa dữ liệu cũ (tùy chọn), tìm nạp dữ liệu mới, chạy ANALYZE
và đóng kết nối:
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;