मुझे एक तालिका में सभी स्तंभों के कॉलम डेटा प्रकारों को प्राप्त करने की आवश्यकता है, जिसमें ज्यामिति के प्रकार भी शामिल हैं। क्या मैं जानना चाहता था कि क्या कोई फंक्शन या एसक्यूएल है जो इस तरह से कुछ देता है:
column_name | data_type
------------+--------------
gid | integer
descr | character varying(32)
class | character varying(10)
area | double precision
geom | geometry(Polygon,3763)
पर कुछ जवाब से stackexchange और gis.stackexchange मुझे पता है कि मैं इस क्वेरी के साथ जानकारी के कुछ प्राप्त कर सकते हैं:
SELECT
g.column_name,
g.data_type,
g.character_maximum_length,
g.udt_name,
f.type,
f.srid
FROM
information_schema.columns as g JOIN
geometry_columns AS f
ON (g.table_schema = f.f_table_schema and g.table_name = f.f_table_name )
WHERE
table_schema = 'my_schema_name' and
table_name = 'my_table_name'
परिणाम:
column_name | data_type | character_maximum_length | udt_name | type | srid
------------+-------------------+--------------------------+----------+---------+------
gid | integer | | | |
descr | character varying | 32 | | |
class | character varying | 10 | | |
area | double precision | |
geom | USER-DEFINED | | geometry | Polygon | 3763
लेकिन, क्या मुझे उस प्रारूप में जानकारी प्राप्त करने का एक उचित और व्यावहारिक तरीका है जो मुझे चाहिए? या क्या मुझे CASE WHEN
उस प्रारूप में किसी एक कॉलम में सभी कॉलम विशेषताओं को इकट्ठा करने के लिए संरचनाओं और स्ट्रिंग के संयोजन की "दुनिया" में प्रवेश करना चाहिए ?
मेरा डर है अगर एक गैर-अपेक्षित डेटा प्रकार ने मुझे info_schema.columns तालिका से अन्य विशेषता की आवश्यकता के लिए आश्चर्यचकित कर दिया। यानी, उदाहरण तालिका में, मैंने पहले कोई numeric (15,2)
डेटा प्रकार का उपयोग नहीं किया था , जिसे एक अन्य विशेषताओं (संख्यात्मक_प्रदर्शन और संख्यात्मक_काले) का उपयोग करने की आवश्यकता होगी जो एक मामले को देखा जाए।
where attname = 'geog'
लेकिन= 'geom'
काम करता है। यह मुझे मल्टीप्लगॉन, प्वाइंट और मल्टीप्वाइंट मूल्यों के लिए अच्छे परिणाम देता है, लेकिन मैं लाइन या मल्टीलाइन प्रकारों के लिए कुछ भी नहीं देखता हूं। क्या वे बहुभुज माने जाते हैं?