web-dev-qa-db-ja.com

表を表示し、赤方偏移で同等の表を説明する

私はawsが初めてです。誰もがmysqlコマンドに相当するredshiftsを教えてもらえますか?

show tables -- redshift command
describe table_name -- redshift command
71
sas

すべての情報は、PG_TABLE_DEFテーブル、 ドキュメント にあります。

publicスキーマ内のすべてのテーブルのリスト(デフォルト)-show tablesと同等:

SELECT DISTINCT tablename
FROM pg_table_def
WHERE schemaname = 'public'
ORDER BY tablename;

table_nameと呼ばれるテーブルのすべての列の説明-describe tableと同等:

SELECT *
FROM pg_table_def
WHERE tablename = 'table_name'
AND schemaname = 'public';
98

テーブルと列の詳細を取得するには、情報スキーマから選択する必要がありました。それが誰かを助ける場合:

SELECT * FROM information_schema.tables
WHERE table_schema = 'myschema'; 

SELECT * FROM information_schema.columns
WHERE table_schema = 'myschema' AND table_name = 'mytable'; 
69
Alex Hinton

または単に:

\dtはテーブルを表示します

\d+ <table name>はテーブルを記述します

編集:psqlコマンドラインクライアントを使用して動作します

33
Matt

Tomasz Tybulewiczの答えは良い方法です。

SELECT * FROM pg_table_def WHERE tablename = 'YOUR_TABLE_NAME' AND schemaname = 'YOUR_SCHEMA_NAME';

スキーマ名が検索パスで定義されていない場合、そのクエリは空の結果を表示します。最初に以下のコードで検索パスを確認してください。

SHOW SEARCH_PATH

スキーマ名が検索パスで定義されていない場合、検索パスをリセットできます。

SET SEARCH_PATH to '$user', public, YOUR_SCEHMA_NAME
8
Kishan Pandey

-desc /を使用して、Redshiftでビュー/テーブルの定義を表示できます。 Workbench/JをRedshiftのSQLクライアントとして使用しており、[結果]タブに隣接する[メッセージ]タブで定義を提供します。

次の投稿では、RedshiftからTABLEおよびCOLUMNコメントを取得するクエリを文書化しました。 https://sqlsylvia.wordpress.com/2017/04/29/redshift-comment-views-documenting-data/

楽しい!

テーブルのコメント

    SELECT n.nspname AS schema_name
     , pg_get_userbyid(c.relowner) AS table_owner
     , c.relname AS table_name
     , CASE WHEN c.relkind = 'v' THEN 'view' ELSE 'table' END 
       AS table_type
     , d.description AS table_description
     FROM pg_class As c
     LEFT JOIN pg_namespace n ON n.oid = c.relnamespace
     LEFT JOIN pg_tablespace t ON t.oid = c.reltablespace
     LEFT JOIN pg_description As d 
          ON (d.objoid = c.oid AND d.objsubid = 0)
     WHERE c.relkind IN('r', 'v') AND d.description > ''
     ORDER BY n.nspname, c.relname ;

列コメント

    SELECT n.nspname AS schema_name
     , pg_get_userbyid(c.relowner) AS table_owner
     , c.relname AS table_name
     , a.attname AS column_name
     , d.description AS column_description
    FROM pg_class AS c
    INNER JOIN pg_attribute As a ON c.oid = a.attrelid
    INNER JOIN pg_namespace n ON n.oid = c.relnamespace
    LEFT JOIN pg_tablespace t ON t.oid = c.reltablespace
    LEFT JOIN pg_description As d 
     ON (d.objoid = c.oid AND d.objsubid = a.attnum)
    WHERE c.relkind IN('r', 'v')
     AND a.attname NOT         
     IN ('cmax', 'oid', 'cmin', 'deletexid', 'ctid', 'tableoid','xmax', 'xmin', 'insertxid')
    ORDER BY n.nspname, c.relname, a.attname;
0
Sylvia