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

कैसे गतिशील क्वेरी से तालिका में सम्मिलित करने के लिए?

कमांड को गतिशील रूप से बनाने के लिए मूल क्वेरी:

SELECT format('INSERT INTO %I (%I) SELECT %I FROM %I'
            , tbl_des, col_des, col_src, tbl_src) As sql
FROM   table3;

यह एक क्वेरी उत्पन्न करता है जैसे:

INSERT INTO "Table2" (col2) SELECT col1 FROM "Table1"

उद्धृत अपर-केस वर्तनी पर ध्यान दें। SQL कमांड के विपरीत, जहां गैर-उद्धृत पहचानकर्ता स्वचालित रूप से लोअर-केस में फोल्ड हो जाते हैं, आपकी तालिका में स्ट्रिंग्स अब केस-संवेदी हैं!

मेरा सुझाव है कि आप कभी नहीं डबल-कोट आइडेंटिफ़ायर और विशेष रूप से कानूनी, लोअर-केस नामों का उपयोग करें।

स्वचालित करने के लिए:

DO
$$BEGIN
   EXECUTE (
      SELECT format('INSERT INTO %I (%I) SELECT %I FROM %I'
                  , tbl_des, col_des, col_src, tbl_src) As sql
      FROM   table3
      -- WHERE table3_id = 123  -- select only *one* row!
      );
END$$;

आपको जरूरत समझने के लिए format() समारोह। मैनुअल पढ़ें

आप इसे plpgsql फ़ंक्शन में भी लपेट सकते हैं और अतिरिक्त पैरामीटर पास कर सकते हैं:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pg_dump:[संग्रहकर्ता (डीबी)] क्वेरी विफल:त्रुटि:संबंध के लिए अनुमति अस्वीकृत

  2. Heroku . पर माइग्रेट नहीं किया जा सकता

  3. कॉलम user.id ग्रुप बाय क्लॉज में दिखाई देना चाहिए या एक समग्र फ़ंक्शन में उपयोग किया जाना चाहिए

  4. सर्वर साइड कर्सर के लिए Psycopg2 पंक्ति गणना

  5. अद्यतन करने योग्य दृश्य से डेटा वापस करना काम नहीं कर रहा है?