Esta respuesta es un poco tarde, pero apareció en una búsqueda en Google que hice para la investigación este problema. Solo necesitábamos descripciones de tabla, pero el método sería el mismo para las columnas. Las descripciones de las columnas están en la tabla pg_description también, referenciadas por objoid.
Añadir este punto de vista:
CREATE OR REPLACE VIEW our_tables AS
SELECT c.oid, n.nspname AS schemaname, c.relname AS tablename, d.description,
pg_get_userbyid(c.relowner) AS tableowner, t.spcname AS "tablespace",
c.relhasindex AS hasindexes, c.relhasrules AS hasrules, c.reltriggers > 0 AS hastriggers
FROM pg_class c
LEFT JOIN pg_namespace n ON n.oid = c.relnamespace
LEFT JOIN pg_tablespace t ON t.oid = c.reltablespace
LEFT JOIN pg_description d ON c.oid = d.objoid
WHERE c.relkind = 'r'::"char";
ALTER TABLE our_tables OWNER TO postgres;
GRANT SELECT, UPDATE, INSERT, DELETE, REFERENCES, TRIGGER ON TABLE our_tables TO postgres;
GRANT SELECT ON TABLE our_tables TO public;
A continuación, ejecute:
SELECT tablename, description FROM our_tables WHERE schemaname = 'public'
La vista es una versión modificada de los pg_tables ver que se suma en la columna de la descripción. También podría consultar la definición de la vista para convertirla en una sola consulta.
PostgreSQL no es muy amigable, pero es debido a que cada el usuario tiene su "biblioteca de utilidades" personal (no estándar). Debajo de una función ('rel_description') de mi biblioteca, eso puede ayudarte. –