postgresql 查询所有表名,解决部分表的注释为空的问题
在网上搜到的大部分都是下面这种写法,这种写法有时候会查出来空值,但是navicat等工具查出来明明有值,其实只需要将obj_description ( relfilenode, ‘pg_class’ ) 改成obj_description ( oid, ‘pg_class’ )就行了。
有问题写法
SELECT
relname AS TABLE_NAME,
CAST ( obj_description ( relfilenode, 'pg_class' ) AS VARCHAR ) AS COMMENT
FROM
pg_class C
WHERE
relkind = 'r'
AND relname NOT LIKE'pg_%'
AND relname NOT LIKE'sql_%'
ORDER BY
relname
正确写法
SELECT
relname AS tabname,
CAST ( obj_description ( oid, 'pg_class' ) AS VARCHAR ) AS COMMENT
FROM
pg_class C
WHERE
relkind = 'r'
AND relname NOT LIKE'pg_%'
AND relname NOT LIKE'sql_%'
ORDER BY
relname
本文介绍了一个PostgreSQL查询所有表名及其注释的常见问题,即使用`obj_description(relfilenode, 'pg_class')`时可能会得到空值。作者提供了一个修正方案,建议将查询改为`obj_description(oid, 'pg_class')`,以确保获取正确的表注释。此修正方法已证实可以匹配navicat等数据库管理工具的结果。
383

被折叠的 条评论
为什么被折叠?



