zoukankan      html  css  js  c++  java
  • postgresql数据库 查询表名、备注及字段、长度、是否可控、是否主键等信息

    项目中需要采集postgresql的元数据信息,需查询pgsql 的表名以及表中字段的各信息,

    通过查找资料,记之如下:

    查询表名及备注SQL

    select
        pc.relname as table_name,
        pd.description as comment
    from
        pg_catalog.pg_class pc
    join pg_catalog.pg_description pd on
        pc.oid = pd.objoid
    where
        pc.relname = 'tableName'
        and pd.objsubid = 0

    获取指定表的字段名称、长度、是否为空、是否主键等信息

    SELECT
        pc.relname AS tableName,
        pa.attname AS columnName,
        pt.typname AS columnType,
        ( CASE WHEN pa.attlen > 0 THEN pa.attlen ELSE pa.atttypmod - 4 END ) AS columnLength,
        pa.attnotnull AS isNullAble,
        (    CASE WHEN ( SELECT COUNT(*) FROM pg_constraint WHERE conrelid = pa.attrelid AND conkey[1]= attnum AND contype = 'p' ) > 0 THEN
            TRUE ELSE FALSE 
            END ) AS isPrimary,
            pd.description AS columnDescription 
        FROM
            pg_class pc,
            pg_attribute pa,
            pg_type pt,
            pg_description pd 
        WHERE
            pc.oid = pa.attrelid 
            AND pt.oid = pa.atttypid 
            AND pd.objoid = pa.attrelid 
            AND pd.objsubid = pa.attnum 
            AND pc.relname = 'table_name' 
        ORDER BY
            pc.relname DESC,
            pa.attnum ASC
  • 相关阅读:
    ●BZOJ 2669 [cqoi2012]局部极小值
    ●HDU 6021 MG loves string
    试试数学公式~
    ●BZOJ 3622 已经没有什么好害怕的了
    ●BZOJ 2560 串珠子
    ●BZOJ 4361 isn
    ●BZOJ 2393 Cirno的完美算数教室
    ●BZOJ 1042 [HAOI2008]硬币购物
    ●BZOJ 2839 集合计数
    【LG2481】[SDOI2011]拦截导弹
  • 原文地址:https://www.cnblogs.com/guoxiangyue/p/14771156.html
Copyright © 2011-2022 走看看