2013-01-16 15 views
7

मैं पोस्टग्रेस 9.2 का उपयोग कर रहा हूं। मुझे पोस्टग्रेस डीबी में सभी तालिकाओं के लिए सभी कॉलम नाम को अपर केस में बदलने की आवश्यकता है।पोस्टग्रेज़ में ऊपरी मामले में टेबल कॉलम नाम बदलें

क्या ऐसा करने का कोई तरीका है ?? क्या मुझे पोस्टग्रेज़ में कोई कॉन्फ़िगरेशन बदलने की ज़रूरत है?

उत्तर

31

इससे पहले कि मैं यह कैसे समझाऊं, मैं दृढ़ता से ऐसा करने का सुझाव नहीं देता।

PostgreSQL में, यदि टेबल या स्तंभ नाम गैर उद्धृत, की तरह हैं:

SELECT name FROM mytable WHERE id = 10 

हैं:

SELECT Name FROM MyTable WHERE ID = 10 

वे वास्तव में स्वचालित रूप से मामला कम करने के लिए पहले है, इसलिए ऊपर क्वेरी तह के समान है आप सभी नामों को ऊपरी मामले में परिवर्तित करना चाहते थे, यह कथन काम नहीं करेगा:

SELECT NAME FROM MYTABLE WHERE ID = 10 

आप करना होगा दोहरे-उद्धरण इस क्वेरी में हर एक नाम यह काम कर रहे हैं:

SELECT "NAME" FROM "MYTABLE" WHERE "ID" = 10 

हैं, तो दूसरी ओर, यदि आप मानक PostgreSQL लोअर केस केवल समझौते का उपयोग करें, आप किसी भी मामले का उपयोग कर सकते संयोजन और यह तब तक काम करेगा जब तक आप किसी भी नाम का उद्धरण नहीं देते हैं।


अब, अगर आप अभी भी अपर केस में बदलने के लिए जोर देते हैं, आपको लगता है कि एक फ़ाइल में अपने डेटाबेस स्कीमा डंपिंग द्वारा pg_dump --schema-only उपयोग कर सकते हैं।

ऐसा करने के बाद, सभी CREATE TABLE कथनों की जांच करें और इस डंप के आधार पर उपयुक्त ALTER TABLE कथन बनाएं - आपको ऐसा करने के लिए कुछ स्क्रिप्ट (पर्ल या पायथन) लिखना होगा।

वैकल्पिक रूप से, आप INFORMATION_SCHEMA.TABLES और/या INFORMATION_SCHEMA.COLUMNS पढ़ सकते हैं और उचित ALTER TABLE कथन भी बना सकते हैं और निष्पादित कर सकते हैं।

+0

'तालिका बनाएं' में स्पष्ट रूप से डबल-कॉलिंग कॉलम नाम उद्धरण वर्ण वाले कॉलम नाम बनाता है, लेकिन यह * अभी भी * सबकुछ कम करता है। – weberc2

+0

@ weberc2: यह बस झूठा है। SQLFiddle सबूत: http://sqlfiddle.com/#!17/de97a/1 – mvp

+0

हाँ, ऐसा लगता है कि मेरा टेक्स्ट एडिटर स्मार्ट-कोट्स डालने वाला था। मेरी गलती। – weberc2

संबंधित मुद्दे