Loading

人大金仓,查询表结构和字段定义sql

SELECT x.relname       AS 表英文名,
       bn.table_comment AS 表中文名,
       x.attnum,
       x.字段名称,
       x.字段类型,
       x.字段长度,
       x.字段说明
FROM (
    SELECT c.relname,
           a.attnum,
           a.attname AS 字段名称,
           CASE
               WHEN t.typname = 'int4' THEN 'int'
               ELSE t.typname
           END AS 字段类型,
           CASE
               WHEN a.atttypmod > 0 THEN a.atttypmod - 4
               ELSE NULL
           END AS 字段长度,
           b.description AS 字段说明
    FROM pg_class c
    JOIN pg_attribute a ON a.attrelid = c.oid
    JOIN pg_type t ON a.atttypid = t.oid
    LEFT JOIN pg_description b ON a.attrelid = b.objoid AND a.attnum = b.objsubid
    WHERE c.relkind = 'r'
      AND c.relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'public')
      AND a.attnum > 0
) AS x
LEFT JOIN (
    SELECT c.relname AS table_name,
           d.description AS table_comment
    FROM pg_class c
    JOIN pg_namespace n ON n.oid = c.relnamespace
    LEFT JOIN pg_description d ON d.objoid = c.oid AND d.objsubid = 0
    WHERE c.relkind = 'r'
      AND n.nspname = 'public'
) bn ON x.relname = bn.table_name
ORDER BY x.relname, x.attnum;

 

posted @ 2025-03-07 11:08  Jicing  阅读(617)  评论(0)    收藏  举报