pg库查询表结构字段信息的sql

该SQL查询用于从information_schema.columns获取特定表的字段描述、字段名称、字段类型和默认值。通过CASE语句转换数据类型,提供更易读的格式,例如将int8转换为bigint,timestamp转换为datetime等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SELECT 
  (SELECT 
    col_description (a.attrelid, a.attnum) 
  FROM
    pg_class AS c -- 表
    JOIN pg_attribute AS a 
      ON a.attrelid = c.oid -- 字段,字段描述
  WHERE c.relname = table_name 
    AND a.attnum > 0 
    AND a.attname = column_name) 字段描述,
  column_name 字段名称,
  CASE
    WHEN udt_name = 'int8' 
    THEN data_type 
    WHEN udt_name = 'int4' 
    THEN 'int' 
    WHEN udt_name = 'numeric' 
    THEN 'decimal(' || numeric_precision || ',' || numeric_scale || ')' 
    WHEN udt_name = 'timestamp' 
    THEN 'datetime' 
    WHEN udt_name = 'varchar' 
    THEN udt_name || '(' || character_maximum_length || ')' 
    WHEN udt_name = 'bpchar' 
    THEN 'char(1)' 
    ELSE udt_name 
  END 字段类型,
  CASE
    WHEN column_default LIKE '%::%' 
    THEN SUBSTRING(
      column_default,
      0,
      POSITION('::' IN column_default)
    ) 
    ELSE column_default 
  END 默认值 
FROM
  information_schema."columns" c 
WHERE table_name ='表名' ; 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值