PG_TABLE_DEF - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

PG_TABLE_DEF

存放資料表欄位的相關資訊。

PG_TABLE_DEF 僅傳回使用者可見之資料表的相關資訊。如果 PG_TABLE_DEF 未傳回預期的結果,確認 search_path 參數是否正確設定為包含相關的結構描述。

您可以使用 SVV_TABLE_INFO 來檢視資料表的更全面性資訊,包括資料配送偏度、索引鍵配送偏度、資料表大小、統計等方面的問題。

資料表欄位

資料欄名稱 資料類型 描述
結構描述名稱 name 結構描述名稱。
資料表名稱 name 資料表名稱
欄位 name 資料欄名稱。
類型 text 欄位資料類型。
編碼 character(32) 欄位編碼。
distkey 布林值 若此欄位是資料表的分佈索引鍵,則為 true。
sortkey integer 排序索引鍵中的欄位順序。如果資料表使用的是複合排序索引鍵,則排序索引鍵部分的所有欄位會有正值,指示排序索引鍵中欄位的位置。如果資料表使用的是交錯的排序索引鍵,則排序索引鍵部分的每個欄會有交替為正或負的值,其中絕對值表示排序索引鍵中的欄位置。若為 0,則欄位不是排序索引鍵的一部分。
notnull 布林值 如果欄位有 NOT NULL 限制,則為 true。

範例

下列範例顯示 LINEORDER_COMPOUND 資料表的複合排序索引鍵欄位。

select "column", type, encoding, distkey, sortkey, "notnull" from pg_table_def where tablename = 'lineorder_compound' and sortkey <> 0; column | type | encoding | distkey | sortkey | notnull -------------+---------+----------+---------+---------+-------- lo_orderkey | integer | delta32k | false | 1 | true lo_custkey | integer | none | false | 2 | true lo_partkey | integer | none | true | 3 | true lo_suppkey | integer | delta32k | false | 4 | true lo_orderdate | integer | delta | false | 5 | true (5 rows)

下列範例顯示 LINEORDER_INTERLEAVED 資料表的交錯排序索引鍵欄位。

select "column", type, encoding, distkey, sortkey, "notnull" from pg_table_def where tablename = 'lineorder_interleaved' and sortkey <> 0; column | type | encoding | distkey | sortkey | notnull -------------+---------+----------+---------+---------+-------- lo_orderkey | integer | delta32k | false | -1 | true lo_custkey | integer | none | false | 2 | true lo_partkey | integer | none | true | -3 | true lo_suppkey | integer | delta32k | false | 4 | true lo_orderdate | integer | delta | false | -5 | true (5 rows)

PG_TABLE_DEF 將僅傳回在搜尋路徑中包含之結構描述中資料表的相關資訊。如需更多詳細資訊,請參閱 search_path

例如,假設您建立新結構描述和新資料表,以及查詢 PG_TABLE_DEF。

create schema demo; create table demo.demotable (one int); select * from pg_table_def where tablename = 'demotable'; schemaname|tablename|column| type | encoding | distkey | sortkey | notnull ----------+---------+------+------+----------+---------+---------+--------

查詢未傳回新資料表的任何列。檢查 search_path 的設定。

show search_path; search_path --------------- $user, public (1 row)

demo 結構描述新增至搜尋路徑中並再次執行查詢。

set search_path to '$user', 'public', 'demo'; select * from pg_table_def where tablename = 'demotable'; schemaname| tablename |column| type | encoding |distkey|sortkey| notnull ----------+-----------+------+---------+----------+-------+-------+-------- demo | demotable | one | integer | none | f | 0 | f (1 row)