PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

So erhalten Sie den Kommentar der Rolle aus der PostgreSQL-Datenbank

Eine gute Möglichkeit, herauszufinden, wie Sie diese Art von Informationen abrufen können, besteht darin, die Hilfe für psql zu lesen und finden Sie den Befehl, der diese Informationen anzeigen würde.

In diesem Fall ist es dg+ Befehl.

Sobald Sie den Befehl kennen, können Sie das Drucken der internen SQL-Abfragen von psql aktivieren Tool, um herauszufinden, wie es diese Informationen abruft. Dies geschieht durch Starten von psql mit dem -E Parameter.

Wenn Sie das tun, sehen Sie:

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

Aus Ihrer Frage geht nicht hervor, ob Sie nur etwas möchten -Methode, um den Kommentar anzuzeigen, dann dg+ reicht wohl. Andernfalls können Sie die SQL-Abfrage anpassen, die von psql verwendet wird an Ihre Bedürfnisse anpassen, z. B.:

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

Hinweis:\du und \dg sind derselbe Befehl in psql. Beide werden aus historischen Gründen beibehalten .