2013-05-02 16 views
12

प्रश्न:PostgreSQL: सभी उपलब्ध डेटाटाइप कैसे सूचीबद्ध करें?

PostgreSQL में (एसक्यूएल का उपयोग कर, नहीं सांत्वना), मैं सभी उपलब्ध datataypes कैसे सूचीबद्ध कर सकते हैं?

आदर्श रूप में इस तरह: http://www.java2s.com/Code/PostgreSQL/Postgre-SQL/Displaysalldatatypesintheconnecteddatabasewithcomments.htm

यह भी उपयोगकर्ता परिभाषित प्रकार सूचीबद्ध करना चाहिए, यदि कोई हो तो।
बस pgAdmin3 में सूची की तरह, जहां आप किसी तालिका में किसी नए कॉलम के लिए डेटाटाइप को परिभाषित करते हैं।

उत्तर

18

"डेटा प्रकार" PostgreSQL में वास्तव में आदिम (बिल्ट-इन) प्रकार, एक्सटेंशन द्वारा जोड़े प्रकार, उपयोगकर्ता परिभाषित समग्र प्रकार, डोमेन और तालिका rowtypes भी शामिल है। यह स्पष्ट नहीं है कि इनमें से कौन सा हित में है। किसी दिए गए डेटाबेस में उपलब्ध सभी प्रकार उस डेटाबेस के pg_catalog.pg_type में सूचीबद्ध हैं, इसलिए आपको परिणामों को फ़िल्टर करने की आवश्यकता हो सकती है। the documentation for the pg_type system catalog table देखें।

उपलब्ध के लिए प्रकार लेकिन स्थापित एक्सटेंशन नहीं हैं सूचीबद्ध नहीं है। मौजूदा डेटाबेस में स्थापित एक्सटेंशन द्वारा प्रदान किए गए प्रकारों को सूचीबद्ध करने का कोई तरीका नहीं है।

प्रकारों की एक सुंदर सूची प्राप्त करने के लिए psql के \dT * कमांड का उपयोग करें। आप -E ध्वज के साथ psql चलाकर अंतर्निहित एसक्यूएल इस कार्यान्वित देख सकते हैं:

$ psql -E regress 
regress=> \dT * 
********* QUERY ********** 
SELECT n.nspname as "Schema", 
    pg_catalog.format_type(t.oid, NULL) AS "Name", 
    pg_catalog.obj_description(t.oid, 'pg_type') as "Description" 
FROM pg_catalog.pg_type t 
    LEFT JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace 
WHERE (t.typrelid = 0 OR (SELECT c.relkind = 'c' FROM pg_catalog.pg_class c WHERE c.oid = t.typrelid)) 
    AND NOT EXISTS(SELECT 1 FROM pg_catalog.pg_type el WHERE el.oid = t.typelem AND el.typarray = t.oid) 
    AND pg_catalog.pg_type_is_visible(t.oid) 
ORDER BY 1, 2; 
************************** 
12
select * from pg_type; 

pg_type

+0

आप अपने विशेष DB में सभी प्रकार के, या सभी डेटाटाइप्स कि Postgres में तो उपलब्ध हैं सूचीबद्ध करने के लिए करना चाहते हैं? – Borys

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