相当于PgAdmin3中的“描述表”

时间:2014-01-29 20:57:25

标签: postgresql view pgadmin describe

提出问题并回答:

正如我们许多人所知,PostgreSQL不支持describe tabledescribe view。正如谷歌可能发现的那样,PostgreSQL使用\d+代替。

但是,如果使用PgAdmin访问PostgreSQL(我实际上使用的是PgAdmin3),则\d+不起作用。一个人做了什么呢?

在PgAdmin3中使用查询工具时,我想到了这个问题。我有一个“好吧,呃!”我想看看PgAdmin3的主窗口,以及那个窗口左侧的树上的那一刻。

<servername>
-> <databasename>
-> Schemas
-> <schemaname>
-> Tables

是我的桌子清单, 并点击表名称显示我的文字 非常像\d+会给我看的那些。

所以为了其他任何没有立即发现这一点的人的利益,这是一个答案。

5 个答案:

答案 0 :(得分:22)

PostgreSQL还支持标准SQL信息模式,以检索数据库中对象的详细信息。

即。要获取列信息,您可以查询information_schema.columns视图:

SELECT *
FROM information_schema.columns
WHERE table_name = '????';

检查here有关信息架构的PostgreSQL特定详细信息。

答案 1 :(得分:1)

psql的\ d命令向数据库发送一组查询以询问架构,然后打印结果。

如果您希望能够通过SQL直接提取类似信息,可以使用'-E'psql选项让它显示这些查询。

话虽如此,psql使用内部的Postgresql目录表,而不是标准化的'information_schema'模式(参见garethflowers的回答)。因此,如果您关心可移植性,或者甚至保证它将从一个版本继续工作,那么您可能应该使用information_schema。

答案 2 :(得分:1)

和来自bash shell的笔直:

    psql -d "$db_name" -c '
    SELECT 
    ordinal_position , table_name , column_name , data_type , is_nullable
    FROM information_schema.columns
    WHERE 1=1
    AND table_name = '\''my_table'\''
    ;'

    # or just the col names
    psql -d "$my_db" -t -c \
    "SELECT column_name FROM information_schema.columns 
    WHERE 1=1 AND table_name='my_table'"

答案 3 :(得分:1)

要获得描述查询将返回的完整视图,请右键单击感兴趣的关系/表,然后选择“属性...”,然后使用提供的窗口中的“列”选项卡。

唯一的区别是该窗口不提供有关外键关系的信息。

答案 4 :(得分:0)

您可以使用以下命令: \ d Table_Name