gpt4 book ai didi

sql - 如何在 PostgreSQL 中仅列出表的属性名称

转载 作者:搜寻专家 更新时间:2023-10-30 19:43:41 26 4
gpt4 key购买 nike

我知道我可以使用\d 来列出模式。但是,我需要制作一个前端应用程序来显示表的属性名称。如何在 PostgreSQL 中获取唯一的属性名称?

谢谢!

最佳答案

您需要在 pg_cataloginformation_schema 模式下查询适当的表。运行 psql -E ... 然后 psql 显示内部命令中使用的元数据查询,如 \d,\dt,\dv, ...

information_schemapg_catalog 相同,但更多的是 portalbe(它在 SQL 标准中定义)。如果您的应用仅使用 postgres,那么我会使用 pg_catalog 而不是 information_schema

例如,此查询显示 attribute

的列
SELECT a.attname,
pg_catalog.format_type(a.atttypid, a.atttypmod),
(SELECT substring(pg_catalog.pg_get_expr(d.adbin, d.adrelid) for 128)
FROM pg_catalog.pg_attrdef d
WHERE d.adrelid = a.attrelid AND d.adnum = a.attnum AND a.atthasdef),
a.attnotnull, a.attnum
FROM pg_catalog.pg_attribute a
WHERE a.attrelid = 'attribute'::regclass AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum

更新:您可以使用这样的简单查询:

SELECT attname 
FROM pg_catalog.pg_attribute
WHERE attrelid = 'attribute'::regclass AND attnum > 0 AND NOT attisdropped

或使用等效查询:

SELECT column_name 
FROM information_schema.columns
WHERE table_name = 'attribute'
ORDER BY ordinal_position

如果您在多个模式中有相同名称的相同表,您还需要用户模式名称,查询会稍微复杂一些。

关于sql - 如何在 PostgreSQL 中仅列出表的属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13520859/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com