J'ai une base de données "test" dans PostgreSql. Je veux écrire un sql pour obtenir le propriétaire de ma base de données.
Réponses
Trop de publicités?La requête suivante affiche des informations pour toutes les tables du schéma public :
select t.table_name, t.table_type, c.relname, c.relowner, u.usename
from information_schema.tables t
join pg_catalog.pg_class c on (t.table_name = c.relname)
join pg_catalog.pg_user u on (c.relowner = u.usesysid)
where t.table_schema='public';
source : http://cully.biz/2013/12/11/postgresql-getting-the-owner-of-tables/
Rappelez-vous qu'en SQL, y compris postgres, vous disposez d'une hiérarchie au sein d'une instance de serveur sql donnée : catalog/db > schema > tables
Lors de la recherche de perms/métadonnées pour sur un catalogue que vous souhaitez consulter information_schema
Exemple : information_schema.role_table_grants
pour les permanentes de table
Exemple : information_schema.role_usage_grants
pour les perms SEQUENCE/schema
https://www.postgresql.org/docs/current/information-schema.html
Pour la configuration/méta au niveau du catalogue/de la base de données, vous devez regarder un autre niveau plus haut dans la section pg_catalog
.
https://www.postgresql.org/docs/current/catalogs.html
Exemple :
SELECT dbs.datname, roles.rolname
FROM pg_catalog.pg_database dbs, pg_catalog.pg_roles roles
WHERE dbs.datdba = roles.oid;
pg_catalog.pg_database.datdba
a l'ID du rôle du propriétaire.
pg_catalog.pg_roles.oid
a l'ID du rôle de propriétaire (join)
pg_catalog.pg_roles.rolname
a le nom/chaîne du rôle du propriétaire
- Réponses précédentes
- Plus de réponses