如何从PostgreSQL数据库中获取角色的注释[英] How to get role's comment from the PostgreSQL database

本文是小编为大家收集整理的关于如何从PostgreSQL数据库中获取角色的注释的处理方法,想解了如何从PostgreSQL数据库中获取角色的注释的问题怎么解决?如何从PostgreSQL数据库中获取角色的注释问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

给定角色名称someone,如何获得用子句定义的评论:

COMMENT ON ROLE someone IS 'THIS IS A ROLE COMMENT';

?

推荐答案

查找如何检索此类信息的一个好方法是查看 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

如果您只是希望 some 方法来查看评论,您的问题并不清楚,那么 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 中是同一个命令.两者都维护出于历史原因.

本文地址:https://www.itbaoku.cn/post/1764052.html