अपने सिस्टम में पैकेज स्थापित करने के बाद विस्तृत रूप में संबंधित प्रश्न में
एक्सटेंशन dblink
इंस्टॉल करें
अपने डेटाबेस में (जिस पर आप इस कोड को चला रहे हैं, विदेशी डीबी को इसकी आवश्यकता नहीं है):
CREATE EXTENSION dblink;
आपको कोड उदाहरण मैनुअल में मिल सकते हैं
.
यहां डीबीएस के बीच डेटा कॉपी करने के लिए उपयोग किए जाने वाले का एक सरल संस्करण है:पहला, एक विदेशी सर्वर बनाएं
CREATE SERVER mydb
FOREIGN DATA WRAPPER postgresql
OPTIONS (hostaddr '111.111.111.111',port '5432',dbname 'mydb');
FOREIGN DATA WRAPPER postgresql
मेरे मामले में पहले से स्थापित था।
फिर एक फ़ंक्शन बनाएं जो एक कनेक्शन खोलता है, पुराने डेटा को हटाता है (वैकल्पिक), नया डेटा प्राप्त करता है, ANALYZE
चलाता है और कनेक्शन बंद कर देता है:
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;