web-dev-qa-db-ja.com

psqlを使用してすべてのデータベースとテーブルを一覧表示するにはどうすればよいですか?

私はPostgreSQLの管理について学び、psqlコマンドラインツールの使い方を学び始めました。

psql --username=postgresを使用してログインする場合、すべてのデータベースとテーブルを一覧表示するにはどうすればよいですか?

\dddS+を試しましたが、何も表示されません。私はpgAdmin IIIで2つのデータベースといくつかのテーブルを作成したので、それらがリストされているはずです。

1243
Jonas

次のコマンドに注意してください。

  • \listまたは\l:すべてのデータベースを一覧表示します
  • \dtsearch_pathを使用して、現在のデータベース内のすべてのテーブルを一覧表示します
  • \dt *.search_pathに関係なく、現在のデータベース内のすべてのテーブルを一覧表示します

他のデータベースのテーブルは表示されません。これらのテーブルは表示されません。テーブル(およびその他のオブジェクト)を表示するには、正しいデータベースに接続する必要があります。

データベースを切り替えるには:

\connect database_nameまたは\c database_name

psql に関するマニュアルを参照してください。

1639
Frank Heikens

これはデータベースをリストします:

SELECT datname FROM pg_database
WHERE datistemplate = false;

現在のデータベースのテーブルを一覧表示します

SELECT table_schema,table_name
FROM information_schema.tables
ORDER BY table_schema,table_name;
381
RolandoMySQLDBA

Postgresqlでは、これらのターミナルコマンドは利用可能なデータベースをリストします

el@defiant$ /bin/psql -h localhost --username=pgadmin --list

または、コマンドはより簡単に述べています:

psql -U pgadmin -l

これらのコマンドは、これを端末に出力します。

                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 kurz_prod | pgadmin  | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 pgadmin   | pgadmin  | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(5 rows)

これらは利用可能なデータベースです。

PSQLでは、これらのコマンドは利用可能なテーブルを一覧表示します

データベース内のテーブルを一覧表示する前に、データベースを指定する必要があります。

el@defiant$ psql -U pgadmin -d kurz_prod

これにより、psqlターミナルが表示されます。

kurz_prod=#

コマンド\dを使用すると、すべてのテーブル、ビュー、シーケンスが表示されます

kurz_prod=# \d

これは印刷します:

           List of relations
Schema |  Name   |   Type   |  Owner
--------+---------+----------+---------
public | mytable | table    | pgadmin
public | testing | sequence | pgadmin
(2 rows)

次に、psqlターミナルを終了するには、\qと入力してEnterキーを押します。または、Ctrl-Dも同じことを行います。これらはそのデータベースのテーブルです。

112
Eric Leschinski

\l\listの短縮形でもあります。かなりの数のスラッシュコマンドがあり、\?を使用してpsqlにリストできます。

74
Derek Arnold

データベースとテーブルリストの詳細情報を取得するには、次のようにします。

\l+データベースを一覧表示する

                                                                    List of databases
    Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   |  Size   | Tablespace |                Description
------------+----------+----------+-------------+-------------+-----------------------+---------+------------+--------------------------------------------
 pgbench    | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                       | 29 MB   | pg_default |
 postgres   | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                       | 6073 kB | pg_default | default administrative connection database
 slonmaster | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                       | 1401 MB | movespace  |
 slonslave  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                       | 32 MB   | pg_default |
 template0  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +| 5785 kB | pg_default | unmodifiable empty database
            |          |          |             |             | postgres=CTc/postgres |         |            |
 template1  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +| 5985 kB | pg_default | default template for new databases
            |          |          |             |             | postgres=CTc/postgres |         |            |
 test       | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                       | 13 MB   | pg_default |
(7 rows)

そして

\d+現在のデータベースの現在のsearch_pathスキーマにあるすべてのテーブルを一覧表示します。

test=# \dn+ --list schemas
                          List of schemas
  Name  |  Owner   |  Access privileges   |      Description       
--------+----------+----------------------+------------------------
 public | postgres | postgres=UC/postgres+| standard public schema
        |          | =UC/postgres         | 
schema1 | postgres | postgres=UC/postgres+| 
        |          | =UC/postgres         | 
(2 row)

test=# set search_path to schema1, public;
SET
test=# \d+
                                  List of relations
     Schema  |      Name       | Type  |    Owner     |    Size    | Description
    ---------+-----------------+-------+--------------+------------+-------------
     public  | all_units       | table | postgres     | 0 bytes    |
     public  | asset           | table | postgres     | 16 kB      |
     public  | asset_attribute | table | postgres     | 8192 bytes |
     public  | food            | table | postgres     | 48 kB      |
     public  | name_log        | table | postgres     | 8192 bytes |
     public  | outable         | table | ordinaryuser | 0 bytes    |
     public  | outable2        | table | ordinaryuser | 0 bytes    |
     public  | test            | table | postgres     | 16 kB      |
     public  | usr             | table | postgres     | 5008 kB    |
     schema1 | t1              | table | postgres     | 0 bytes    |
    (10 rows)
36
Soni Harriz

Pg_Adminから、現在のデータベースで次のコマンドを実行するだけで、指定したスキーマのすべてのテーブルを取得できます。

SELECT * 
FROM information_schema.tables 
WHERE table_type = 'BASE TABLE' 
    AND table_schema = 'public' 
ORDER BY table_type, table_name

これにより、すべての永続テーブル(通常は探しているテーブル)のリストが表示されます。 *ワイルドカードをtable_nameのみに変更すると、テーブル名のみを取得できます。パブリックtable_schemaは、管理者が新しいスキーマを設定していない限り、ほとんどのデータベースのデフォルトスキーマです。

33
Larry W

検索パスに含まれていないスキーマ、またはデフォルト、つまりパブリックにテーブルを挿入した可能性があるため、\ dtを使用してもテーブルは表示されません。たとえばデータと呼ばれるスキーマを使用する場合は、次のコマンドを実行して修正できます。

alter database <databasename> set search_path=data, public;

Psqlを終了して再入力すると、\ dtはスキーマデータのテーブルも表示します。

19
John Powell