postgresql - 確認 - psql 終了




PostgreSQLにテーブルを表示する (12)

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


  1. 最初にpostgresユーザーとしてログイン:

    sudo su - postgres

  2. 必要なdb: psql -d databaseName接続しpsql -d databaseName

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


-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;        
**************************

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. 次に、 SELECT * FROM my_table;などのSQL文を実行できますSELECT * FROM my_table; (注:ステートメントはセミコロンで終わらなければなりません;
  7. \q psqlを終了する

\ dtはテーブルをリストし、 "\ pset pager off"は別のウィンドウに切り替えることなく、それらを同じウィンドウに表示します。 その特徴を大胆に死に愛する。


(完全性のために)

また、(SQL標準) 情報スキーマを照会することもできます

SELECT
    table_schema || '.' || table_name
FROM
    information_schema.tables
WHERE
    table_type = 'BASE TABLE'
AND
    table_schema NOT IN ('pg_catalog', 'information_schema');

\dtだけでは、使用しているデータベースのパブリック・スキーマの表がリストされます。 私はテーブルを別々のスキーマに保つのが好きなので、受け入れられた答えは私のためには機能しませんでした。

特定のスキーマ内のすべてのテーブルを一覧表示するには 、以下が必要でした:

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

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

\dt

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

SELECT * FROM pg_catalog.pg_tables;

システムテーブルは、pg_catalogデータベースに存在します。


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

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

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

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

 \c ubuntu

このメッセージは、

"ユーザ" postgres "としてデータベース" ubuntu "に接続しました。"

このコマンドを実行すると、すべてのテーブルが表示されます

\d+

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

sudo -u postgres psql

すべてのデータベースとユーザーを\lコマンドで一覧表示することができます(他のコマンドは\? )。

他のデータベースを見たい場合は、 \c postgres postgres \c template1\c postgres postgresような\c template1コマンドでユーザ/データベースを変更し、 \d\dt\dSを使ってテーブル/ビュー/ etcを見ることができます。


作成した表の一覧のみを表示する場合は、次のようにします。

\dt

しかし、私たちはあなたがどのテーブルを表示するかをカスタマイズするのに役立つPATTERNも持っています。 pg_catalogスキーマを含むすべてを表示するには、 *を追加し*

\dt *

あなたがしている場合: \?

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


最初に次のコマンドを使用してデータベースに接続します

\c database_name

このメッセージが表示されます。これで、データベースdatabase_nameに接続され、次のコマンドが実行されます

SELECT * FROM table_name;

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







postgresql