提出问题并回答:
正如我们许多人所知,PostgreSQL不支持describe table
或describe view
。正如谷歌可能发现的那样,PostgreSQL使用\d+
代替。
但是,如果使用PgAdmin访问PostgreSQL(我实际上使用的是PgAdmin3),则\d+
不起作用。一个人做了什么呢?
在PgAdmin3中使用查询工具时,我想到了这个问题。我有一个“好吧,呃!”我想看看PgAdmin3的主窗口,以及那个窗口左侧的树上的那一刻。
下<servername>
-> <databasename>
-> Schemas
-> <schemaname>
-> Tables
是我的桌子清单,
并点击表名称显示我的文字
非常像\d+
会给我看的那些。
所以为了其他任何没有立即发现这一点的人的利益,这是一个答案。
答案 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