如何使用 PostgreSQL 从表名中获取列属性查询? [英] How to get column attributes query from table name using PostgreSQL?
本文介绍了如何使用 PostgreSQL 从表名中获取列属性查询?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个项目,我需要一个查询来使用表名获取列的所有属性(列名、位置、数据类型、非空?和注释).
I have a project and I need a query to get all attributes of the columns (Column Name, Position, Data Type, Not Null? and Comments) all this using table name.
我获得了列名、位置数据类型和非空?使用此查询:
I achieved get Column Name, Position Data Type and Not Null? with this query:
SELECT column_name, data_type, ordinal_position, is_nullable
FROM information_schema."columns"
WHERE "table_name"='TABLE-NAME'
但是,我需要评论!
推荐答案
这里是针对系统目录的查询 应该可以获取您需要的所有内容(免费提供一个额外的主键字段).
Here's query against the system catalog that should fetch everything you need (with a bonus primary-key field thrown in for free).
SELECT DISTINCT
a.attnum as num,
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)
WHERE a.attnum > 0 AND pgc.oid = a.attrelid
AND pg_table_is_visible(pgc.oid)
AND NOT a.attisdropped
AND pgc.relname = 'TABLE_NAME' -- Your table name here
ORDER BY a.attnum;
返回的结果如下:
num | name | typ | notnull | comment | primary_key
-----+-------------+-----------------------------+---------+---------------------+-------------
1 | id | integer | t | a primary key thing | t
2 | ref | text | f | | f
3 | created | timestamp without time zone | t | | f
4 | modified | timestamp without time zone | t | | f
5 | name | text | t | | f
- num:列号
- name:列名
- typ:数据类型
- notnull:列是否定义为
NOT NULL
- comment:为列定义的任何
COMMENT
- primary_key: 列是否定义为
PRIMARY KEY
- default:用于默认值的命令
这篇关于如何使用 PostgreSQL 从表名中获取列属性查询?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文