postgresql PgAdmin3中“描述表”的等效项

beq87vna  于 2023-10-18  发布在  PostgreSQL
关注(0)|答案(6)|浏览(118)

提问和回答:
PostgreSQL不支持describe tabledescribe view。正如人们可能从谷歌发现的那样,PostgreSQL使用\d+代替。
但是,如果使用PgAdmin访问PostgreSQL(我实际上使用的是PgAdmin 3),那么\d+就不能工作。那我们该怎么做呢
我在玩PgAdmin 3中的查询工具时想到了这个问题。我有一个“嗯,废话!“当我想到PgAdmin 3的主窗口时,在窗口左侧的树上。下

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

是我的表的列表,单击表名显示的文本与\d+显示的文本非常相似。
所以为了那些没有马上发现这个问题的人的利益,这里有一个答案。

dojqjjoe

dojqjjoe1#

PostgreSQL还支持标准的SQL信息模式来检索数据库中对象的详细信息。
也就是说,要获取列信息,您可以查询information_schema.columns视图:

SELECT *
FROM information_schema.columns
WHERE table_name = '<YourTableName>';
  • 一定要用单引号,双引号不行 *

检查here以获取有关信息模式的PostgreSQL特定细节。

d6kp6zgx

d6kp6zgx2#

psql的\d命令向数据库发送一组查询以询问模式,然后打印结果。
如果您希望能够直接通过SQL提取类似的信息,则可以使用'-E' psql选项让它显示这些查询。
话虽如此,psql使用内部的Postgresql目录表,而不是标准化的'information_schema'模式(请参阅Anchorthflowers的回答)。因此,如果您关心可移植性,或者甚至保证它从一个版本到下一个版本都能继续工作,那么您可能应该使用information_schema。

1u4esq0p

1u4esq0p3#

和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'"
pprl5pva

pprl5pva4#

要获得describe查询将返回的完整视图,请右键单击感兴趣的关系/表并选择Properties.然后使用提供的窗口中的“列”选项卡。
唯一的区别是该窗口不给予有关外键关系的信息。

q9yhzks0

q9yhzks05#

下面是Gareth Flowers的回答:

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

并且确保使用表的小写名称..

oug3syen

oug3syen6#

可以使用以下命令:\d表名称(_N)

相关问题