Geometri türleri de dahil olmak üzere bir tablodaki tüm sütunların sütun veri türlerini almam gerekiyor. Ne bilmek istedim bir işlev veya böyle bir şey veren SQL varsa:
column_name | data_type
------------+--------------
gid | integer
descr | character varying(32)
class | character varying(10)
area | double precision
geom | geometry(Polygon,3763)
Üzerinde birkaç yanıtlarından Stack Exchange ve gis.stackexchange ben şu sorgu ile bazı bilgileri alabilirsiniz biliyor:
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'
Sonuç:
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
Ancak, bilgileri ihtiyacım olan formatta almanın daha pratik bir yolu var mı? Yoksa CASE WHEN
tüm sütun niteliklerini bu biçimde tek bir sütunda toplamak için yapıların ve dize birleşiminin "dünyasını" girmeli miyim ?
Benim korkum, beklenmeyen bir veri türünün, bilgi_sistemi sütunları tablosundan başka bir özelliğe ihtiyaç duyması beni şaşırtmasıdır. Yani, daha önce örnek tabloda, numeric (15,2)
bir VAKA ZAMANI tarafından ayrıştırılması için başka bir öznitelik (sayısal_doğrulama ve sayısal_asal) kullanması gereken herhangi bir veri türü kullanmadım.
where attname = 'geog'
ama= 'geom'
işe yarıyor. Bu bana MultiPolygon, Point ve MultiPoint değerleri için iyi sonuçlar veriyor, ancak Line veya MultiLine türleri için hiçbir şey görmüyorum. Bunlar çokgen sayılıyor mu?