SELECT
pgc.relname AS table_name,
pgd.description AS table_description
FROM
pg_class pgc
LEFT JOIN
pg_description pgd ON (pgc.oid = pgd.objoid AND pgd.objsubid = 0)
JOIN
pg_namespace pgn ON pgn.oid = pgc.relnamespace
WHERE
pgc.relkind = 'r' -- 'r'代表普通表
AND
pgn.nspname = 'public';
在这个查询中:
sys_class
是包含数据库对象信息的系统表。relname
是表的名称。sys_description
包含对象的描述信息(注释),其中objoid
指向对象的OID,objsubid
为0表示这是一个对象级别的注释(而非列级别)。relkind = 'r'
确保只选择普通表。relnamespace
来过滤特定模式下的表,在这个例子中为public
模式。如果你想要查看其他模式下的表,你需要将nspname
替换为目标模式的名称。
请注意,具体的系统表名、字段名等可能会因版本不同而有所差异。建议参考您所使用的KingbaseES版本的官方文档以获得最准确的信息。
此外,如果您发现上述查询未能如预期工作,请确保您有足够的权限访问系统表,并且您的数据库确实使用注释来存储表的描述信息。如果没有找到相应的描述,可能是因为没有为表设置描述信息。在这种情况下,您可以使用COMMENT ON TABLE
语句为表添加描述。