PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

PostgreSQL में dblink.sql का उपयोग करके दो तालिकाओं के बीच डेटा कॉपी करें

अपने सिस्टम में पैकेज स्थापित करने के बाद विस्तृत रूप में संबंधित प्रश्न में एक्सटेंशन 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;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CAS डेटाबेस प्रमाणीकरण काम नहीं कर रहा है

  2. मणि इंस्टॉल पीजी ओएसएक्स शेर पर काम नहीं करता है

  3. क्या मुझे INDEX और UNIQUE INDEX दोनों को निर्दिष्ट करना चाहिए?

  4. एक ऐप से दूसरे ऐप में हेरोकू ट्रांसफर डीबी

  5. विदेशी कुंजी प्रदर्शन द्वारा पोस्टग्रेज ऑर्डर?