web-dev-qa-db-ja.com

Redshift:テーブルの列はinformation_schema.columnsにありますが、pg_catalog.pg_table_defにはありません

Redshiftでテーブルを作成します。テーブル定義を検索しようとすると、次のクエリを実行してinformation_schema.columnsから結果を取得します。

select * from information_schema.columns 
where table_name = 'table' and table_schema='schema'

ただし、pg_catalog.pg_table_defに対してクエリを実行すると、結果が返されません。

select * from pg_catalog.pg_table_def 
where tablename = 'table' and  schemaname = 'schema'

誰かがこれがなぜ起こっているのか理解するのを手伝ってくれる?テーブルは、使用しているアカウントによって作成および所有されます。

3
Lee

小切手 show search_path;を使用して、テーブルが作成された現在のパスにいることを確認します。元のAWS redshift documentation に記載されています。

PG_TABLE_DEFは、ユーザーに表示されるテーブルに関する情報のみを返します。

欲しいものを手に入れるには

set search_path to '$user', '<#your_schema#>'; select * from pg_catalog.pg_table_def where tablename = '<#your_table#>';

お役に立てば幸いです。

3
Joao Caxias