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

postgresql:INSERT INTO ... (चुनें * ...)

जैसा कि हेनरिक ने लिखा था, आप दूरस्थ डेटाबेस को जोड़ने और परिणाम प्राप्त करने के लिए dblink का उपयोग कर सकते हैं। उदाहरण के लिए:

psql dbtest
CREATE TABLE tblB (id serial, time integer);
INSERT INTO tblB (time) VALUES (5000), (2000);

psql postgres
CREATE TABLE tblA (id serial, time integer);

INSERT INTO tblA
    SELECT id, time 
    FROM dblink('dbname=dbtest', 'SELECT id, time FROM tblB')
    AS t(id integer, time integer)
    WHERE time > 1000;

TABLE tblA;
 id | time 
----+------
  1 | 5000
  2 | 2000
(2 rows)

PostgreSQL में रिकॉर्ड छद्म-प्रकार (केवल फ़ंक्शन के तर्क या परिणाम प्रकार के लिए) है, जो आपको किसी अन्य (अज्ञात) तालिका से डेटा क्वेरी करने की अनुमति देता है।

संपादित करें:

आप चाहें तो इसे तैयार स्टेटमेंट के रूप में बना सकते हैं और यह काम भी करता है:

PREPARE migrate_data (integer) AS
INSERT INTO tblA
    SELECT id, time
    FROM dblink('dbname=dbtest', 'SELECT id, time FROM tblB')
    AS t(id integer, time integer)
    WHERE time > $1;

EXECUTE migrate_data(1000);
-- DEALLOCATE migrate_data;

संपादित करें (हाँ, दूसरा):

मैंने अभी-अभी आपका संशोधित प्रश्न देखा है (डुप्लिकेट के रूप में बंद है, या इससे बहुत मिलता-जुलता है)।

अगर मेरी समझ सही है (पोस्टग्रेज में tbla है और dbtest में tblb है और आप स्थानीय चयन के साथ दूरस्थ सम्मिलित करना चाहते हैं , नहीं स्थानीय सम्मिलन के साथ दूरस्थ चयन ऊपर के रूप में):

psql dbtest

SELECT dblink_exec
(
    'dbname=postgres',
    'INSERT INTO tbla
        SELECT id, time
        FROM dblink
        (
            ''dbname=dbtest'',
            ''SELECT id, time FROM tblb''
        )
        AS t(id integer, time integer)
        WHERE time > 1000;'
);

मुझे वह नेस्टेड dblink पसंद नहीं है, लेकिन AFAIK मैं dblink_exec बॉडी में tblB का संदर्भ नहीं दे सकता। शीर्ष 20 पंक्तियों को निर्दिष्ट करने के लिए LIMIT का उपयोग करें, लेकिन मुझे लगता है कि आपको पहले ORDER BY क्लॉज का उपयोग करके उन्हें सॉर्ट करना होगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल क्वेरी से पहला और आखिरी रिकॉर्ड कैसे प्राप्त करें?

  2. डेटाबेस में अंतिम एन पंक्तियों को क्रम में प्राप्त करें?

  3. psql अमान्य कमांड \N जबकि sql को पुनर्स्थापित करें

  4. रेल/पोस्टग्रेस्क्ल एसक्यूएल मतभेद डब्ल्यू/तिथियां

  5. PostgreSQL में एक ऑटो इंक्रीमेंट प्राथमिक कुंजी को कैसे परिभाषित करें