注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

星期五

明天不上班

 
 
 

日志

 
 
关于我

一个特立独行的Java程序员,比较宅,上上网,写博客,听音乐,看电影。

网易考拉推荐

PostgreSQL 之查看表结构  

2011-07-13 21:00:51|  分类: Postgresql |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

PostgreSQL 默认查看表结构的命令\d table_name

但是总有让你很无奈的时候 (\d 命令失效)

ERROR: column "reltriggers" does not exist at character 41LINE 1: SELECT relhasindex, relkind, relchecks, reltriggers, relhasr...

这时候怎么办? (重装数据库?)

我觉得还是写一个Function 来解决吧!!!

Function Code 如下:
-----------------------------------------------------------------------------------------------------------------------------
?CREATE OR REPLACE FUNCTION show_table(table_name text)
  RETURNS text AS
$$
DECLARE
    query_sql text := '';
    column_desc record;
    table_desc text := '';
BEGIN
        query_sql := 'select a.attnum as num, t.typname as type, a.attname as name, a.attlen as len
        from pg_class c, pg_attribute a, pg_type t
        where c.relname = '''|| table_name ||''' and a.attnum > 0
        and a.attrelid = c.oid and a.atttypid = t.oid';

        table_desc := rpad('num',6) || E'\t' || rpad('column_name',20) || E'\t' || rpad('column_type',15) || E'\t' || rpad('column_len',10) || E'\n';

        table_desc := table_desc || repeat('-',60)|| E'\n';

        for column_desc in execute(query_sql) loop            
        table_desc := table_desc || ' ' || rpad(column_desc.num::varchar,6,' ') || E'\t' || rpad(column_desc.name::varchar,20,' ') || E'\t' || rpad(column_desc.type::varchar,15,' ') || E'\t' || rpad(column_desc.len::varchar,10,' ') || E'\n';    
        end loop;

    if column_desc is null then
        return ':( Sorry, ' || table_name || ' is not exist !!!';
    end if;
        
        table_desc := table_desc || repeat('-',60)|| E'\n';
        
        table_desc := table_desc || ':) TIME ' || to_char(now(),'HH24:MI:SS') || E'\n';

        return table_desc;
END;
$$
LANGUAGE plpgsql;

----------------------------------------------------------------------------------------------------------------------------------------------

 

这里面主要强调:

1.plpgsql 的换行 E'\n'

2.rpad 函数的用法 rpad 当字符串不够时,补空格

3. ::data_type  强制转换

4.execute执行动态sql

看一下测试结果:

select show_table('pg_language');

  PostgreSQL 之查看表结构 - zhenghaoju700 - zhenghaoju700 的博客

  评论这张
 
阅读(2116)| 评论(0)
推荐

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017