[SQL] 어떻게 PostgreSQL을에있는 테이블의 목록 열 이름과 데이터 유형을 얻으려면?
SQL어떻게 PostgreSQL을에있는 테이블의 목록 열 이름과 데이터 유형을 얻으려면?
다음 쿼리, 우리는 열 이름과 PostgreSQL의 테이블의 데이터 타입의 목록을 얻을 수 있습니다.
해결법
-
==============================
1.열기 psql의 명령 줄을 입력 :
열기 psql의 명령 줄을 입력 :
\d+ table_name
-
==============================
2.
select column_name,data_type from information_schema.columns where table_name = 'table_name';
위의 쿼리 할 수 있습니다 열 및 데이터 유형
-
==============================
3.
SELECT a.attname as "Column", pg_catalog.format_type(a.atttypid, a.atttypmod) as "Datatype" FROM pg_catalog.pg_attribute a WHERE a.attnum > 0 AND NOT a.attisdropped AND a.attrelid = ( SELECT c.oid FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE c.relname ~ '^(hello world)$' AND pg_catalog.pg_table_is_visible(c.oid) );
그것은 더 많은 정보 : http://www.postgresql.org/docs/9.3/static/catalog-pg-attribute.html
-
==============================
4.같은 테이블 이름을 가진 여러 스키마를해야하는 경우에 스키마 이름을 추가하는 것을 잊지 마십시오.
같은 테이블 이름을 가진 여러 스키마를해야하는 경우에 스키마 이름을 추가하는 것을 잊지 마십시오.
SELECT column_name, data_type FROM information_schema.columns WHERE table_name = 'your_table_name' AND table_schema = 'your_schema_name';
또는 psql 프로그램을 사용하여 :
\d+ your_schema_name.your_table_name
-
==============================
5.업데이트 Pratik의 대답은 더 스키마와 nullables을 지원하기 :
업데이트 Pratik의 대답은 더 스키마와 nullables을 지원하기 :
SELECT "pg_attribute".attname as "Column", pg_catalog.format_type("pg_attribute".atttypid, "pg_attribute".atttypmod) as "Datatype", not("pg_attribute".attnotnull) AS "Nullable" FROM pg_catalog.pg_attribute "pg_attribute" WHERE "pg_attribute".attnum > 0 AND NOT "pg_attribute".attisdropped AND "pg_attribute".attrelid = ( SELECT "pg_class".oid FROM pg_catalog.pg_class "pg_class" LEFT JOIN pg_catalog.pg_namespace "pg_namespace" ON "pg_namespace".oid = "pg_class".relnamespace WHERE "pg_namespace".nspname = 'schema' AND "pg_class".relname = 'table' );
-
==============================
6.지원은 열 이름과 특정 스키마의 테이블의 유형을 발견하고 사용하는 버전은 하위 쿼리없이 조인
지원은 열 이름과 특정 스키마의 테이블의 유형을 발견하고 사용하는 버전은 하위 쿼리없이 조인
SELECT pg_attribute.attname AS column_name, pg_catalog.format_type(pg_attribute.atttypid, pg_attribute.atttypmod) AS data_type FROM pg_catalog.pg_attribute INNER JOIN pg_catalog.pg_class ON pg_class.oid = pg_attribute.attrelid INNER JOIN pg_catalog.pg_namespace ON pg_namespace.oid = pg_class.relnamespace WHERE pg_attribute.attnum > 0 AND NOT pg_attribute.attisdropped AND pg_namespace.nspname = 'my_schema' AND pg_class.relname = 'my_table' ORDER BY attnum ASC;
-
==============================
7.테이블의 컬럼에 대한 정보를 얻으려면, 당신은 사용할 수 있습니다 :
테이블의 컬럼에 대한 정보를 얻으려면, 당신은 사용할 수 있습니다 :
\dt+ [tablename]
테이블의 데이터 유형에 대한 정보를 얻으려면, 당신은 사용할 수 있습니다 :
\dT+ [datatype]
-
==============================
8.
SELECT DISTINCT ROW_NUMBER () OVER (ORDER BY pgc.relname , a.attnum) as rowid , pgc.relname as table_name , a.attnum as attr, a.attname as name, format_type(a.atttypid, a.atttypmod) as typ, a.attnotnull as notnull, com.description as comment, coalesce(i.indisprimary,false) as primary_key, def.adsrc as default FROM pg_attribute a JOIN pg_class pgc ON pgc.oid = a.attrelid LEFT JOIN pg_index i ON (pgc.oid = i.indrelid AND i.indkey[0] = a.attnum) LEFT JOIN pg_description com on (pgc.oid = com.objoid AND a.attnum = com.objsubid) LEFT JOIN pg_attrdef def ON (a.attrelid = def.adrelid AND a.attnum = def.adnum) LEFT JOIN pg_catalog.pg_namespace n ON n.oid = pgc.relnamespace WHERE 1=1 AND pgc.relkind IN ('r','') AND n.nspname <> 'pg_catalog' AND n.nspname <> 'information_schema' AND n.nspname !~ '^pg_toast' AND a.attnum > 0 AND pgc.oid = a.attrelid AND pg_table_is_visible(pgc.oid) AND NOT a.attisdropped ORDER BY rowid ;
-
==============================
9.선택 COLUMN_NAME, INFORMATION_SCHEMA.COLUMNS 곳에서 DATA_TYPE TABLE_NAME = 'your_table_name'및 TABLE_CATALOG = 'your_database_name'및 TABLE_SCHEMA = 'your_schema_name';
선택 COLUMN_NAME, INFORMATION_SCHEMA.COLUMNS 곳에서 DATA_TYPE TABLE_NAME = 'your_table_name'및 TABLE_CATALOG = 'your_database_name'및 TABLE_SCHEMA = 'your_schema_name';
-
==============================
10.이 항목에 '더 완전한'확인하십시오.
이 항목에 '더 완전한'확인하십시오.
나는 SELECT 문 (안 테이블)에 열 이름과 데이터 형식이 필요합니다.
대신 실제 기존 테이블의 SELECT 문에이 작업을 수행하려면 다음을 수행 할 수 있습니다 :
DROP TABLE IF EXISTS abc; CREATE TEMPORARY TABLE abc AS -- your select statement here! SELECT * FROM foo -- end your select statement ; select column_name, data_type from information_schema.columns where table_name = 'abc'; DROP IF EXISTS abc;
짧은 설명은, 당신의 선택 문,의 (임시) 테이블을 만드는 할 수 있습니다 (다른 사람의 사이)에 의해 제공되는 쿼리를 통해시 '전화'@a_horse_with_no_name 및 @selva.
도움이 되었기를 바랍니다.
-
==============================
11.스키마를 언급하지 않고 또한 필요한 정보를 얻을 수 있습니다 이 질의 - 시도>
스키마를 언급하지 않고 또한 필요한 정보를 얻을 수 있습니다 이 질의 - 시도>
선택 COLUMN_NAME, DATA_TYPE INFORMATION_SCHEMA.COLUMNS에서 여기서 TABLE_NAME가 'TABLE_NAME를';
from https://stackoverflow.com/questions/20194806/how-to-get-a-list-column-names-and-datatype-of-a-table-in-postgresql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 레코드를 삽입하고 하나의하는 SqlCommand를 사용하여 새로 생성 된 ID를 반환? (0) | 2020.06.04 |
---|---|
[SQL] 어떻게 무시하는 "중복 키"T-SQL의 오류 (SQL 서버) (0) | 2020.06.04 |
[SQL] 당신은 어떻게 T-SQL에서 기본 값 또는 유사한 제약 조건을 삭제합니까? (0) | 2020.06.04 |
[SQL] SQL 서버와 마지막 행을 읽는 방법 (0) | 2020.06.04 |
[SQL] SQL ROW_NUMBER () WHERE 절에 기능 (0) | 2020.06.04 |