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

PostgreSQL में एकाधिक कॉलम का नाम बदलना

कोई एकल आदेश दृष्टिकोण नहीं है। जाहिर है कि आप RENAME . के लिए कई कमांड टाइप कर सकते हैं अपने आप से, लेकिन मुझे कुछ सुधार करने दें :) जैसा कि मैंने this answer में कहा था।

आपके मामले में यह होगा:

SELECT
    'ALTER TABLE ' || tab_name || ' RENAME COLUMN '
    || quote_ident(column_name) || ' TO '
    || quote_ident( '_1' || column_name) || ';'
FROM (
    SELECT
        quote_ident(table_schema) || '.' || quote_ident(table_name) as tab_name,
        column_name
    FROM information_schema.columns  
    WHERE 
            table_schema = 'schema_name'
            AND table_name = 'table_name'
            AND column_name LIKE '\_%'
) sub;

यह आपको स्ट्रिंग्स का सेट देगा जो SQL कमांड हैं जैसे:

ALTER TABLE  schema_name.table_name RENAME COLUMN "_settingA" TO "_1_settingA";
ALTER TABLE  schema_name.table_name RENAME COLUMN "_settingB" TO "_1_settingB";
...

table_schema . का उपयोग करने की कोई आवश्यकता नहीं है WHERE . में खंड यदि आपकी तालिका public में है स्कीमा। फ़ंक्शन का उपयोग करना भी याद रखें quote_ident() -- अधिक स्पष्टीकरण के लिए मेरा मूल उत्तर पढ़ें।

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

मैंने अपनी क्वेरी बदल दी है, इसलिए अब यह अंडरस्कोर _ से शुरू होने वाले नाम वाले सभी कॉलम के लिए काम करता है . चूंकि SQL पैटर्न मिलान में अंडरस्कोर विशेष वर्ण है, इसलिए हमें इससे बचना चाहिए (\ . का उपयोग करके) ) वास्तव में इसे खोजने के लिए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgresql डेटाबेस में डेटा डालने के लिए ActiveRecord और रेल का उपयोग करने से यह त्रुटि मिलती है:RuntimeError:ERROR C22003 Minteger o

  2. कॉन्फ्लिक्ट सेट कॉलम संदर्भ पर पोस्टग्रेज अस्पष्ट है

  3. PHP के साथ SQL क्वेरी को मान्य करना

  4. क्या मैं चुनिंदा सूची में एक पोस्टग्रेज कीवर्ड को उपनाम के रूप में उपयोग कर सकता हूं?

  5. प्रति माह सभी दिनों की सूची बनाएं और प्रत्येक दिन को समान रूप से विभाजित करें