Vous n'êtes pas identifié(e).

#1 20/08/2019 11:42:04

dimitri
Membre

pg_stat_all_tables table partitionnée

Bonjour,

je travaille sur un entrepôt de données ou je génère la documentation (nom des champs, datatype, commentaire etc.) directement à partir des commentaires que je pose sur le modèle.

Je génère ma liste des tables avec cette requête :

select st.schemaname as table_schema, st.relname as table_name
FROM pg_catalog.pg_stat_all_tables as st
where st.schemaname = 'mon_schema'

et quand on sélectionne une table sur l'interface web je récupère les commentaires et les infos de la table pour générer une doc  :

SELECT c.ordinal_position, st.schemaname as table_schema, st.relname as table_name,c.column_name, c.data_type, c.column_default, c.is_nullable, pgd.description
FROM pg_catalog.pg_statio_all_tables as st
inner join information_schema.columns c on (c.table_schema=st.schemaname and c.table_name=st.relname)
left join pg_catalog.pg_description pgd on (pgd.objoid=st.relid and pgd.objsubid=c.ordinal_position)
where st.schemaname = 'mon_schema'

Les 2 requêtes sont simplifiées mais c'est l'idée.

J'ai mis à jour postgresql vers la v11 cette année et j'ai introduit des tables partitionnées dans le modèle. Problème ! ma table "maitresse" ne se trouve pas dans pg_stat_all_tables, je n'ai que les partitions.
Dans mon interface je me retrouve avec la même table partitionnée sur l'année sur 20 ans d'historique ! avec les commentaires associés sur les 20 tables.

J'aimerais récupérer uniquement la table principale avec les commentaires associés.

Merci pour votre aide

Hors ligne

#2 20/08/2019 12:04:45

rjuju
Administrateur

Re : pg_stat_all_tables table partitionnée

Bonjour,

Utilisez plutôt pg_class (https://www.postgresql.org/docs/current … class.html) avec un filtre sur relkind pour récupérer uniquement les tables simples et partitionnées (et sur relispartition en cas de sous partitionnement).

Hors ligne

Pied de page des forums