本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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)