कोई एकल आदेश दृष्टिकोण नहीं है। जाहिर है कि आप 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 पैटर्न मिलान में अंडरस्कोर विशेष वर्ण है, इसलिए हमें इससे बचना चाहिए (\
. का उपयोग करके) ) वास्तव में इसे खोजने के लिए।