如何获得角色';来自PostgreSQL数据库的注释

如何获得角色';来自PostgreSQL数据库的注释,postgresql,Postgresql,给定角色名someone,如何获取用子句定义的注释: 对角色的评论某人是“这是一个角色评论” ?找到如何检索此类信息的一个好方法是查看psql的帮助并找到显示此信息的命令 在这种情况下,它是dg+命令 了解该命令后,可以启用打印psql工具的内部SQL查询,以了解它是如何检索该信息的。这是通过使用-E参数启动psql来完成的 如果您这样做,您将看到: psql (9.4.5) Type "help" for help. postgres=# \dg+ ********* QUERY *****

给定角色名
someone
,如何获取用子句定义的注释:

对角色的评论某人是“这是一个角色评论”


找到如何检索此类信息的一个好方法是查看
psql
的帮助并找到显示此信息的命令

在这种情况下,它是
dg+
命令

了解该命令后,可以启用打印
psql
工具的内部SQL查询,以了解它是如何检索该信息的。这是通过使用
-E
参数启动
psql
来完成的

如果您这样做,您将看到:

psql (9.4.5)
Type "help" for help.

postgres=# \dg+
********* QUERY **********
SELECT r.rolname, r.rolsuper, r.rolinherit,
  r.rolcreaterole, r.rolcreatedb, r.rolcanlogin,
  r.rolconnlimit, r.rolvaliduntil,
  ARRAY(SELECT b.rolname
        FROM pg_catalog.pg_auth_members m
        JOIN pg_catalog.pg_roles b ON (m.roleid = b.oid)
        WHERE m.member = r.oid) as memberof
, pg_catalog.shobj_description(r.oid, 'pg_authid') AS description
, r.rolreplication
FROM pg_catalog.pg_roles r
ORDER BY 1;
**************************

                                List of roles
   Role name   |            Attributes             | Member of | Description
---------------+-----------------------------------+-----------+-----------------------
 someone       |                                   | {}        | THIS IS A ROLE COMMENT
您的问题不清楚您是否只想通过某种方法查看注释,那么
dg+
可能就足够了。否则,您可以根据需要调整
psql
使用的SQL查询,例如:

SELECT pg_catalog.shobj_description(r.oid, 'pg_authid') AS description
FROM pg_catalog.pg_roles r
where r.rolname = 'someone';

注意:\du和\dg是psql中的同一命令。两者都得到维持

角色在群集中的所有数据库上共享。这些共享对象的注释包含在
pg\u shdescription
系统目录中。您可以获得以下角色的评论:

SELECT rolname, description AS comment
FROM pg_roles r
JOIN pg_shdescription c ON c.objoid = r.oid;

要简化接受答案的查询,请执行以下操作:

select r.rolname, psd.description
from pg_catalog.pg_shdescription psd
inner join pg_roles r ON r.oid = psd.objoid
inner join pg_class c ON c.relname = 'pg_authid'
inner join pg_namespace n ON n.oid = c.relnamespace AND n.nspname = 'pg_catalog';

使用
psql
\du+
大致输出:

\du+ someone
 Role name |          Attributes           | Member of |      Description
-----------+-------------------------------+-----------+------------------------
 someone   | Password valid until infinity | {}        | THIS IS A ROLE COMMENT

您可以在此处阅读
说明
列中的注释。

谢谢。现在一切都清楚了。是的,我一直在寻找要执行的SQL查询。哈哈,我一直在寻找解决方案,并找到了我自己的答案太遗憾了,我不能投票表决。