sql >> データベース >  >> RDS >> PostgreSQL

Psqlはすべてのテーブルを一覧表示します

    すべてを一覧表示する場合 テーブル、使用する必要があります:

    \dt *.*
    

    すべてのスキーマのすべてのテーブルが必要であることを示します 。これには、pg_catalogのテーブルが含まれます 、システムテーブル、およびinformation_schemaのテーブル 。 「すべてのユーザー定義スキーマのすべてのテーブル」を言う組み込みの方法はありません。ただし、search_pathを設定することはできます \dtを実行する前に、対象のすべてのスキーマのリストに移動します 。

    これをプログラムで実行することをお勧めします。その場合、psql バックスラッシュ-コマンドはその仕事をしません。ここでINFORMATION_SCHEMA 救助に来る。テーブルを一覧表示するには:

    SELECT table_name FROM information_schema.tables WHERE table_schema = 'public';
    

    ところで、psqlが何であるかを知りたい場合は バックスラッシュコマンドに応答して実行している場合は、psqlを実行します -Eを使用 国旗。例:

    $ psql -E regress    
    regress=# \list
    ********* QUERY **********
    SELECT d.datname as "Name",
           pg_catalog.pg_get_userbyid(d.datdba) as "Owner",
           pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding",
           d.datcollate as "Collate",
           d.datctype as "Ctype",
           pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges"
    FROM pg_catalog.pg_database d
    ORDER BY 1;
    **************************
    

    そのpsqlを見ることができます pg_catalog.pg_databaseを検索しています データベースのリストを取得するとき。同様に、特定のデータベース内のテーブルの場合:

    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' WHEN 'f' THEN 'foreign table' 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;
    

    SQL標準の移植可能なINFORMATION_SCHEMAを使用することをお勧めします 可能な場合はPgシステムカタログの代わりに、Pg固有の情報が必要になる場合があります。そのような場合は、システムカタログを直接クエリし、psql -Eを実行することで問題ありません。 その方法についての役立つガイドになる可能性があります。



    1. SQLで、各グループの上位2行を選択する方法

    2. IN句のパラメータを使用したOracleストアドプロシージャ

    3. SQLAlchemyで生のSQLを実行する方法

    4. SQLServerCTEと再帰の例