23

提问和回答的问题:

正如我们许多人所知,PostgreSQL 不支持describe tabledescribe view. 正如人们可能从 google 中发现的那样,PostgreSQL\d+改为使用。

但是,如果使用 PgAdmin 访问 PostgreSQL(我实际上使用的是 PgAdmin3),则\d+无法正常工作。一个人做什么?

我在玩PgAdmin3中的查询工具时想到了这个问题。我有一个“嗯,呃!” 当我想看看 PgAdmin3 的主窗口以及该窗口左侧的树时。在下面

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

是我的表格列表,单击表格名称会向我显示文本,这与向我显示的内容非常相似\d+

因此,为了其他没有立即发现这一点的人的利益,这里有一个答案。

4

5 回答 5

42

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

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

SELECT *
FROM information_schema.columns
WHERE table_name = '<YourTableName>';

一定要用单引号,双引号不行

在此处查看有关信息架构的 PostgreSQL 特定详细信息。

于 2014-01-29T21:38:16.587 回答
2

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

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

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

于 2014-01-29T23:41:16.267 回答
2

直接来自 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'"
于 2017-05-30T12:33:18.597 回答
1

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

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

于 2018-12-11T22:42:19.840 回答
-3

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

于 2020-06-02T03:35:43.013 回答