如何列出 PostgreSQL 中的所有模式?

Sté*_*ane 340 schema postgresql postgresql-9.1

使用 PostgreSQL v9.1 时,如何使用 SQL 列出所有模式?

我期待着以下内容:

SELECT something FROM pg_blah;
Run Code Online (Sandbox Code Playgroud)

a_h*_*ame 355

要列出所有模式,请使用 (ANSI) 标准 INFORMATION_SCHEMA

select schema_name
from information_schema.schemata;
Run Code Online (Sandbox Code Playgroud)

手册中的更多详细信息

或者:

select nspname
from pg_catalog.pg_namespace;
Run Code Online (Sandbox Code Playgroud)

手册中有关 pg_catalog 的更多详细信息


epp*_*uig 353

使用psql命令行时,您可以使用command 列出所有模式\dn

  • @Tommy `\dt` 列出了公共模式的表。要显示所有模式的表,请使用 `\dt *.*`,对于特定模式使用 `\dt schema_name.*`。 (19认同)
  • “\dn”列出的“模式”是什么,而不是“\dt”列出的表? (3认同)
  • @Tommy,模式是命名空间:您可能在不同的命名空间中有不同的同名表。 (2认同)

小智 51

连接到 psql 命令 --> psql --u {userName} {DBName} 然后您可以键入以下命令来检查数据库中存在多少架构

DBName=# \dn
Run Code Online (Sandbox Code Playgroud)

否则,您可以通过以下步骤轻松检查语法-

  1. 连接数据库后,按

    DBName=# help
    
    Run Code Online (Sandbox Code Playgroud)

您将获得以下选项:

您正在使用 psql,这是 PostgreSQL 的命令行界面。
键入:\copyright 用于分发条款
\h 用于 SQL 命令的帮助
\? 有关 psql 命令的帮助
\g 或以分号终止以执行查询
\q 退出

然后按

DBName=# \?
Run Code Online (Sandbox Code Playgroud)

您将非常轻松地获得所有选项。


Son*_*riz 19

从 postgres 9.3 开始,您可以在 postgres 中使用的一个技巧是使用事务来获取 psql 中信息命令(例如 \d、\du、\dp 等)的确切 sql。诀窍是这样的。打开一个 postgres 会话,然后输入您的命令:

begin;
\dn+
Run Code Online (Sandbox Code Playgroud)

当事务仍在运行时,打开另一个 postgres 会话,并查询 pg_stat_activity,您可以获得确切的 sql。

postgres=# select query from pg_stat_activity ;
                                 query                                 
-----------------------------------------------------------------------
 SELECT n.nspname AS "Name",                                          +
   pg_catalog.pg_get_userbyid(n.nspowner) AS "Owner",                 +
   pg_catalog.array_to_string(n.nspacl, E'\n') AS "Access privileges",+
   pg_catalog.obj_description(n.oid, 'pg_namespace') AS "Description" +
 FROM pg_catalog.pg_namespace n                                       +
 WHERE n.nspname !~ '^pg_' AND n.nspname <> 'information_schema'      +
 ORDER BY 1;
Run Code Online (Sandbox Code Playgroud)

  • 你不需要欺骗它;只需运行`\set ECHO_HIDDEN on` (20认同)
  • 或将其作为 `psql -E` 运行 (16认同)