首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有没有psql命令来显示表的定义?

有没有psql命令来显示表的定义?
EN

Stack Overflow用户
提问于 2016-03-25 00:33:44
回答 1查看 5.8K关注 0票数 5

sqlite3 CLI有一个命令.schema,它将显示数据库中所有表的列。

用于PostgreSQL的psql CLI有一个元命令\d和一个元命令\dt,前者显示所有“关系”(表、视图、索引、序列或外部表)的列,后者列出表中的关系,但不显示这些表中的列。

有没有办法让psql像sqlite3的.schema那样显示输出?\d只显示关系表的输出?\d *显示所有关系的列,在我的32个表的数据库中,它包含63个表和序列。模式(本例中为*)似乎能够匹配关系名称,但不能匹配关系类型。是否有“匹配所有表”的模式?

EN

回答 1

Stack Overflow用户

发布于 2016-11-29 17:59:12

如果你想要这样的输出:

代码语言:javascript
运行
复制
sqlite> .schema t24
CREATE TABLE t24 (
    i integer,
    t text
);

您应该使用pg_dump -s,而不是psql

代码语言:javascript
运行
复制
bash>pg_dump -t t24 -s
CREATE TABLE t24 (
    i integer,
    t text
);

它创建了DDL,就像.schema一样...

现在关于注释中的查询,如果您稍微修改它们:

代码语言:javascript
运行
复制
t=# \d t24
      Table "public.t24"
 Column |  Type   | Modifiers
--------+---------+-----------
 i      | integer |
 t      | text    |

t=# SELECT a.attname as "Column",pg_catalog.format_type(a.atttypid, a.atttypmod) as "Type",
  (SELECT substring(pg_catalog.pg_get_expr(d.adbin, d.adrelid) for 128)
   FROM pg_catalog.pg_attrdef d
   WHERE d.adrelid = a.attrelid AND d.adnum = a.attnum AND a.atthasdef) as "Modifiers"
FROM pg_catalog.pg_attribute a
join pg_catalog.pg_class  c  on a.attrelid = c.oid
WHERE true
  AND relname like 't24'
  AND c.relkind = 'r'::"char"
  AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY relname, a.attnum;
 Column |  Type   | Modifiers
--------+---------+-----------
 i      | integer |
 t      | text    |
(2 rows)

此查询将以与\d元命令相同的方式仅显示表。

顺便说一句,我从这个元命令中获取了查询。如果您启动psql -E并运行'\d table_name`,您将看到所有元命令都只是select查询的包装...

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36205342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档