web-dev-qa-db-ja.com

PostgreSQLのすべてのスキーマを一覧表示するにはどうすればよいですか?

PostgreSQL v9.1を使用している場合、SQLを使用してすべてのスキーマを一覧表示するにはどうすればよいですか?

私は次の線に沿って何かを期待していました:

SELECT something FROM pg_blah;
267
Stéphane

すべてのスキーマをリストするには、(ANSI)標準のINFORMATION_SCHEMAを使用します

select schema_name
from information_schema.schemata;

manual の詳細

あるいは:

select nspname
from pg_catalog.pg_namespace;

manual のpg_catalogの詳細

280

psqlコマンドラインを使用する場合、コマンド\dnを使用してすべてのスキーマを一覧表示できます。

274
eppesuig

Psqlコマンドに接続します-> psql --u {userName} {DBName}次に以下のコマンドを入力して、DBに存在するスキーマの数を確認できます

DBName=# \dn

または、以下の手順で構文を簡単に確認できます-

  1. DBに接続した後、

    DBName=# help
    

以下のオプションが表示されます。

PostgreSQLのコマンドラインインターフェースであるpsqlを使用しています。
タイプ:配布条件の\ copyright
\h SQLコマンドのヘルプ
\? psqlコマンドのヘルプ
\gまたはセミコロンで終了してクエリを実行します
\q終了します

次に押す

DBName=# \?

あなたは非常に簡単にすべてのオプションを取得します。

40
Bhabatosh Bera

Postgres 9.3以降、psqlで情報コマンド(\ d、\ du、\ dpなど)の正確なsqlを取得するためにpostgresで使用できる1つのトリックは、トランザクションを使用することです。トリックはここにあります。 1つのpostgresセッションを開き、コマンドを入力します。

begin;
\dn+

トランザクションがまだ実行されている間に、別の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;
12
Soni Harriz