psql: एक कॉलम को छोड़कर *… का चयन करें


10

मैं psql में एक को छोड़कर सभी स्तंभों का चयन करने का एक सरल तरीका खोजता हूं।

साथ psqlमेरा मतलब है इंटरैक्टिव कमांड लाइन।

मैं एक ऐसे उपकरण से खुश रहूंगा *जो उद्धृत कॉलम नामों की सूची में फैलता है । तब मैं हाथ से हटाने के लिए कॉलम को हटा सकता था।

मेरा प्रश्न केवल psql के संवादात्मक उपयोग के बारे में है। यह sql मानक से नाखुश लोगों के प्रश्नों की नकल नहीं है और जो "select -foo" जैसी किसी चीज़ को निष्पादित करना चाहते हैं।


3
कोई नहीं है, क्षमा करें। आप information_schemaएक pl / pgsql फ़ंक्शन के माध्यम से क्वेरी कर सकते हैं एक सूची को बहुत आसानी से उत्पन्न करने के लिए, लेकिन इस तरह से यह दो प्रश्न होंगे।
क्रेग रिंगर

2
अधिकांश GUI उपकरण ऐसा कर सकते हैं। लेकिन अगर आप (या) कमांड लाइन से चिपके रहना चाहते हैं, तो शायद इससे मदद मिलेगी: github.com/dbcli/pgcli
a_horse_with_no_name

@a_horse_with_no_name मैं आपका "उत्तर" स्वीकार करना चाहूंगा। क्या आप कोई उत्तर पोस्ट कर सकते हैं और प्रश्न हल करने वाले pgcli टूल के उपयोग की व्याख्या कर सकते हैं।
गुफ्तगू

सिवाय किस स्तंभ के? आखरी वाला? पहले वाला? या यादृच्छिक एक?
बीएई

1
@ChengchengPei: इसमें कोई descकमांड नहीं हैpsql
a_horse_with_no_name

जवाबों:


4

खराब कॉलम के बिना, डिफ़ॉल्ट क्रम में कॉलम की सूची प्राप्त करने के लिए:

SELECT string_agg(quote_ident(attname), ', ' ORDER BY attnum)
FROM   pg_attribute
WHERE  attrelid = 'myschema.mytable'::regclass
AND    NOT attisdropped  -- no dropped (dead) columns
AND    attnum > 0        -- no system columns
AND    attname <> 'bad_column'  -- case sensitive!

या बस WHERE attrelid = 'mytable'::regclassअगर आप सही स्कीमा के समाधान के लिए खोज पथ पर भरोसा करते हैं

quote_ident() जहाँ आवश्यक हो, डबल-कोट्स जोड़ता है।

मैंने यही सवाल 2007 में pgsql-general पर पूछा था । यह पोस्टग्रेज 8.2 फिर वापस आ गया था। मीठी यादें ...

सम्बंधित:


1
यह एक टू-डू आइटम की तरह लगता है, psql के लिए एक बैकस्लैश कमांड जोड़ने के लिए जो एक स्ट्रिंग का उत्सर्जन करेगा जो एक तालिका के लिए सभी स्तंभों की एक सूची है, उचित रूप से उद्धृत। और आप इसे किसी भी कॉलम को छोड़ सकते हैं जो कमांड में अतिरिक्त तर्क के रूप में शामिल थे। इसलिए काल्पनिक रूप से \dq thetable bad_column
जेजेन्स

@ जेजेन्स: मुझे यकीन नहीं है कि यह मुख्य डेवलपर्स को qकार्य के लिए मुफ्त पत्र आवंटित करने के लिए मनाने की पर्याप्त मांग उत्पन्न कर सकता है । हो सकता है कि \dसम्‍मिलित नामों की नंगे सूची दिखाने के लिए कमांडों के पूरे परिवार के लिए एक सामान्य विकल्प ? जैसे \d- tbl(महामारी: विपरीत \d+, जो अधिक विवरण दिखाता है )। यह मूल रूप से वस्तुओं की किसी भी नंगे सूची को प्राप्त करने की अनुमति देगा । एक स्कीमा में टेबल्स: \dt- public.*"f_foo" के साथ शुरू होने वाले कार्य: \df- f_foo*आदि - या किसी तालिका में कॉलम \d- mytbl:। शेल कमांड lsक्या करता है ... इसके समान
इरविन ब्रांडस्टैटर

मैं तुम्हें ईनाम देता हूं। लेकिन कुछ अंतर्निहित psql वास्तव में एक अच्छी सुविधा होगी। धन्यवाद Erwin :-)
guettli

0

मुझे लगता है कि मैंने वह ढूंढ लिया है जो आप ढूंढ रहे हैं लेकिन मैंने खुद इसका परीक्षण नहीं किया है।

वहाँ एक सॉफ्टवेयर SequelPro कहा जाता है जो आपको किसी दिए गए तालिका से फ़ील्ड का चयन करने की अनुमति देगा लेकिन यह केवल MySQL के लिए है। कृपया पृष्ठ के बीच में कहीं से नीचे से पढ़ें:

http://www.sequelpro.com/docs/Working_with_Query_Favorites

एक और सॉफ्टवेयर है जिसे PSequel कहा जाता है जो केवल Mac पर चलता है और यह दावा करता है कि यह Postques के लिए निर्मित SequelPro प्रकार का है:

http://www.psequel.com/

उम्मीद है की यह मदद करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.