PG_TABLE_DEF - Amazon Redshift

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

PG_TABLE_DEF

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

PG_TABLE_ DEF只會傳回使用者可見資料表的相關資訊。如果 PG_TABLE_ DEF未傳回預期結果,請確認search_path參數已正確設定,以包含相關結構描述。

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

資料表欄

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