web-dev-qa-db-ja.com

PostgreSQLにテーブルを表示する

PostgreSQLの(MySQLからの)show tablesと同等なものは何ですか?

1394
flybywire

psqlコマンドラインインターフェースから、これは現在のスキーマのすべてのテーブルを表示します。

\dt

プログラム的に(あるいはもちろんpsqlインターフェースからも):

SELECT * FROM pg_catalog.pg_tables;

システムテーブルはpg_catalogデータベースにあります。

2064

スーパーユーザーとしてログイン:

Sudo -u postgres psql

\lコマンドですべてのデータベースとユーザーをリストできます(\?で他のコマンドをリストします)。

他のデータベースを表示する場合は、\c\c template1などの\c postgres postgresコマンドでユーザー/データベースを変更し、\d\dt、または\dSを使用してテーブル/ビュー/などを表示できます。

183
JLarky

(完全を期すために)

(SQL標準) 情報スキーマ :に問い合わせることもできます。

SELECT
    table_schema || '.' || table_name
FROM
    information_schema.tables
WHERE
    table_type = 'BASE TABLE'
AND
    table_schema NOT IN ('pg_catalog', 'information_schema');
101
Milen A. Radev
  1. Postgresユーザーとして最初にログインします。

    Sudo su - postgres

  2. 必要なデータベースに接続します。psql -d databaseName

  3. \dtは、接続しているデータベース内のすべてのテーブルのリストを返します。

48
nish

PostgreSQLの対話型端末Psqlを使用して、PostgreSQLのテーブルを表示できます。 

1. Psqlを起動します

通常、次のコマンドを実行してpsqlに入ることができます。

psql DBNAME USERNAME

例えば、psql template1 postgres

考えられる状況の1つは、rootとしてログインし、データベース名を覚えていないとします。次のコマンドを実行して、最初にPsqlに入るだけです。

Sudo -u postgres psql

いくつかのシステムでは、Sudoコマンドは利用できません、代わりに以下のどちらかのコマンドを実行することができます。

psql -U postgres
psql --username=postgres

2.テーブルを表示する

これでPsqlでは、次のようなコマンドを実行できます。

  1. \?はすべてのコマンドをリストします
  2. \lリストデータベース
  3. \conninfoは現在の接続に関する情報を表示します
  4. \c [DBNAME]は新しいデータベースに接続します、例えば\c template1
  5. \dtリストテーブル
  6. その後、SQLステートメント、例えばSELECT * FROM my_table;を実行できます(注:ステートメントはセミコロン;で終了する必要があります)
  7. \qはpsqlを終了します
36
Yuci

-Eフラグを指定してpsqlを実行すると、\dtなどを実装するために内部で使用されているクエリがエコーされます。

Sudo -u postgres psql -E

postgres=# \dt       
********* QUERY **********
SELECT n.nspname as "Schema",
c.relname as "Name", 
CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' END as "Type",
pg_catalog.pg_get_userbyid(c.relowner) as "Owner"
FROM pg_catalog.pg_class c
    LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','')
    AND n.nspname <> 'pg_catalog'
    AND n.nspname <> 'information_schema'
    AND n.nspname !~ '^pg_toast'
AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1,2;        
**************************
34
bsb

作成したテーブルのリストだけを見たい場合は、次のように入力するだけです。

\dt

しかし、表示するテーブルをカスタマイズするのに役立つPATTERNもあります。 pg_catalogスキーマを含むすべてを表示するには、*を追加します。

\dt *

もしそうなら:\?

\ dt [S +] [PATTERN]リストテーブル

23
Banned_User

まず以下のコマンドでデータベースに接続します 

\c database_name

そして、あなたはこのメッセージを見るでしょう - You are now connected to database database_name。そして彼らは次のコマンドを実行します。 

SELECT * FROM table_name;

Database_nameとtable_nameでは、データベースとテーブル名で更新するだけです。

20
J4cK

テーブルのみを見る 

=> \dt

スキーマテーブルを見たい場合

=>\dt+

特定のスキーマテーブルを見たい場合

=>\dt schema_name.* 
17
Aryan

あなたがすべてのデータベースとそのスキーマをチェックすることができるようにスーパーユーザーとしてログインしてください -

Sudo su - postgres

その後、次のコマンドを使用してpostgresqlシェルにアクセスできます。

psql

あなたは今、次のコマンドを使用して、すべてのデータベースのリストを確認することができます。 -

\l

あなたが同様にデータベースのサイズをチェックしたい場合は: -

\l+

データベースを見つけたら、次のコマンドを使用してそのデータベースに接続できます。

\c database_name

接続したら、次の方法でデータベーステーブルまたはスキーマを確認できます -

\d

さあシェルに戻るには: -

q

さらに特定のテーブルの使用の詳細を見るために: -

\d table_name

PostgreSQLでpgAdmin4を使用している場合は、これを使用してデータベースのテーブルを表示できます。

select * from information_schema.tables where table_schema='public';
14
Reynante Daitol

\dtだけで、使用しているデータベースの public スキーマ内のテーブルが一覧表示されます。私は自分のテーブルを別々のスキーマに保存するのが好きなので、受け入れられた答えは私にはうまくいきませんでした。

すべてのテーブル特定のスキーマ内を一覧表示するには、次の操作を行います。

1)目的のデータベースに接続します。

psql mydb

2)\dtコマンドの後にテーブルを見たいスキーマ名を以下のように指定します。

\dt myschema.*

これは私が私が興味を持っている結果を示しています:

               List of relations
 Schema   |       Name      | Type  |  Owner   
----------+-----------------+-------+----------
 myschema | users           | table | postgres
 myschema | activity        | table | postgres
 myschema | roles           | table | postgres
13
rotarydial

\ dt(必須ではありません) - すでに接続している既存のデータベースのすべてのテーブルを一覧表示します。注意するのにも便利:

\ d [table_name] - 型情報、参照、キー制約を含む与えられたテーブルの全てのカラムを表示します。

7
user4642897

現在のデータベース内のテーブルを\dtで一覧表示できます。

Fwiw、\d tablenameは与えられたテーブルの詳細を表示します。MySQLのshow columns from tablenameのようなものですが、もう少し情報があります。

5
JohnK
select * from pg_catalog.pg_tables
where schemaname != 'information_schema' and schemaname != 'pg_catalog';
5

psql :\ dtを使用する

または

SELECT c.relname AS Tables_in FROM pg_catalog.pg_class c
        LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE pg_catalog.pg_table_is_visible(c.oid)
        AND c.relkind = 'r'
        AND relname NOT LIKE 'pg_%'
ORDER BY 1
4
MisterJoyson

まず第一にあなたはあなたのデータベースに接続する必要があります

私のデータベースは ubuntu です

このコマンドを使って接続する

 \c ubuntu

このメッセージが表示されます 

"これで、ユーザ" postgres "としてデータベース" ubuntu "に接続されました。

このコマンドを実行して、その中のすべてのテーブルを表示します。 

\d+
3
Usman Yaqoob

\ dtはテーブルを一覧表示し、 "\ pset pager off"は別のテーブルに切り替えずにそれらを同じウィンドウに表示します。その機能をdbshel​​lで死に愛してください。

1
lauri108

クイックワンライナーとして

# just list all the postgres tables sorted in the terminal
db='my_db_name'
clear;psql -d $db -t -c '\dt'|cut -c 11-|Perl -ne 's/^([a-z_0-9]*)( )(.*)/$1/; print'
0
Yordan Georgiev

Psqlで外部テーブルを表示するには、\dEを実行してください。

0
Ian Hunter