该sqlite3的CLI有一个命令.schema,将显示数据库中所有表的列。
PostgreSQL的psql CLI 有一个元命令\d,它显示所有“关系”(表、视图、索引、序列或外部表)的列和一个元命令\dt,它列出作为表的关系但不显示表的列那些桌子。
有没有办法psql像sqlite3一样显示输出.schema- 仅显示\d表关系的输出? \d *显示所有关系的列,在我的 32 个表的数据库中包含 63 个表和序列。模式(*在本例中)似乎能够匹配关系名称,但不能匹配关系类型。是否有“匹配所有表格”的模式?
如果你想要这样的输出:
sqlite> .schema t24
CREATE TABLE t24 (
i integer,
t text
);
Run Code Online (Sandbox Code Playgroud)
你应该使用pg_dump -s,而不是psql:
bash>pg_dump -t t24 -s
CREATE TABLE t24 (
i integer,
t text
);
Run Code Online (Sandbox Code Playgroud)
它创建了 DDL 就像.schema......
现在关于评论中的查询,如果你稍微修改一下:
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)
Run Code Online (Sandbox Code Playgroud)
\d此查询将仅以与元命令相同的方式显示表。
顺便说一句,我从这个元命令中获取了查询。如果您启动psql -E并运行 '\d table_name` 您将看到所有元命令都只是选择查询的包装...
| 归档时间: |
|
| 查看次数: |
5406 次 |
| 最近记录: |