相当于 PgAdmin3 中的“描述表”

Posted

技术标签:

【中文标题】相当于 PgAdmin3 中的“描述表”【英文标题】:Equivalent of "describe table" in PgAdmin3 【发布时间】:2014-02-21 22:17:26 【问题描述】:

提问和回答:

我们很多人都知道,PostgreSQL 不支持describe tabledescribe view。正如从 google 中可能发现的那样,PostgreSQL 使用 \d+ 代替。

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

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

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

是我的表格列表, 并单击表名向我显示文本 非常类似于 \d+ 向我展示的内容。

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

【问题讨论】:

严格来说,psql 使用 \dt; PostgreSQL 服务器后端没有,但它确实提供了information_schema 视图。 【参考方案1】:

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

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

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

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

查看here 了解有关信息架构的 PostgreSQL 特定详细信息。

【讨论】:

information_schemas 是我一直在寻找的。在 pgadmin 3 中需要相当于 sys(在 MS SQL Server 中)。谢谢。【参考方案2】:

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

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

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

【讨论】:

【参考方案3】:

直接来自 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'"

【讨论】:

【参考方案4】:

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

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

【讨论】:

【参考方案5】:

您可以使用以下命令: \d 表名

【讨论】:

尝试在你的答案中添加一些解释,这样会更清晰易懂。请阅读 ***.com/help/how-to-answer 我认为需要更好的解释,因为对于许多版本,此命令不起作用。

以上是关于相当于 PgAdmin3 中的“描述表”的主要内容,如果未能解决你的问题,请参考以下文章

pgAdmin3 通过 ssh 隧道备份

pgAdmin3 连接问题

适用于 Windows 的 pgadmin3 深色主题?

我可以从命令行启动 pgAdmin3 吗?

pgadmin3

安装配置postgreSQL+pgcli+pgadmin3