지오메트리 유형을 포함하여 테이블에있는 모든 열의 열 데이터 유형을 가져와야합니다. 내가 알고 싶은 것은 다음과 같은 함수 또는 SQL이 있는지 여부입니다.
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
모든 형식의 열 속성을 하나의 열에 해당 형식으로 수집하려면 구조와 문자열 연결 의 "세계"를 입력해야 합니까?
information_schema.columns 테이블의 다른 속성이 필요하여 예기치 않은 데이터 유형이 나를 놀라게 할 경우 두렵습니다. 즉, 이전 예제 테이블 numeric (15,2)
에서는 CASE WHEN에서 구문 분석하기 위해 다른 속성 (numeric_precision 및 numeric_scale)을 사용해야 하는 데이터 유형을 사용하지 않았습니다 .
where attname = 'geog'
얻지 못하지만 효과= 'geom'
가 있습니다. 이것은 MultiPolygon, Point 및 MultiPoint 값에 대해 좋은 결과를 제공하지만 Line 또는 MultiLine 유형에 대해서는 아무것도 표시되지 않습니다. 그것들은 다각형으로 간주됩니까?