una - select tablas postgresql
Obteniendo lista de comentarios de tabla en PostgreSQL (2)
Postgresql permite agregar comentarios a objetos tales como tablas. Por ejemplo, he agregado un comentario a la tabla "mytable" usando este comando SQL:
COMMENT ON TABLE mytable IS ''This is my table.'';
Mi pregunta es: si quiero usar un comando SQL para obtener todas las tablas junto con sus respectivos comentarios, ¿cómo haría esto? ¿Cuál sería la consulta adecuada para esto?
¡Gracias por adelantado! ¡Aclamaciones!
Estoy usando un alias útil (fachada) para obj_description
, que es fácil de usar, porque el nombre de la tabla ( nombre de relname
) es un varchar y se puede expresar con un campo separado para el nombre del esquema , como en las tablas principales y las consultas.
CREATE FUNCTION rel_description(
p_relname varchar, p_schemaname varchar DEFAULT NULL
) RETURNS text AS $f$
SELECT obj_description((CASE
WHEN strpos($1, ''.'')>0 THEN $1
WHEN $2 IS NULL THEN ''public.''||$1
ELSE $2||''.''||$1
END)::regclass, ''pg_class'');
$f$ LANGUAGE SQL;
-- EXAMPLES OF USE:
-- SELECT rel_description(''mytable'');
-- SELECT rel_description(''public.mytable'');
-- SELECT rel_description(''otherschema.mytable'');
-- SELECT rel_description(''mytable'', ''otherschema'');
-- PS: rel_description(''public.mytable'', ''otherschema'') is a syntax error,
-- but not generates exception: returns the same as (''public.mytable'')
NOTAS:
El comentario se produce con el nombre de la tabla , no con un OID ... "¿Cómo recuperar el comentario con el nombre de la tabla ?"
SELECCIONE obj_description (''schemaName.tableName'' :: regclass, ''pg_class'');
sobre obj_description con solo object_oid (ej. 393862),
obj_description(393862)
, está en desuso , el correcto esSELECT obj_description (393862, ''pg_class'');
Tal como lo recomienda esta respuesta : " Si desea saber qué consultas ejecuta psql cuando hace / dt + o / d + clientes, simplemente
psql -E
conpsql -E
".
PD: gracias a @a_horse_with_no_name.
Todos los comentarios están almacenados en pg_description
Para obtener los comentarios en una tabla, necesita unirla a pg_class
Como alternativa, también puede usar la función obj_description()
para recuperar esta información:
SELECT obj_description(oid)
FROM pg_class
WHERE relkind = ''r''
Editar
En psql, simplemente puede usar el comando /d+
para mostrar todas las tablas incluyendo sus comentarios. O use el comando /dd
para mostrar todos los comentarios en el sistema