Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

PG_TABLE_DEF

存储有关表列的信息。

PG_TABLE_DEF 仅返回有关对用户可见的表的信息。如果 PG_TABLE_DEF 未返回预期结果,则验证 search_path 参数是否正确设置为包含相关 schemas。

可使用 SVV_TABLE_INFO 查看有关表的更多信息,包括数据分配偏斜、密钥分配偏斜、表大小和统计数据。

表列

列名称 数据类型 描述
schemaname name schema 名称。
tablename name 表名称。
column name 列名称。
type text 列的数据类型。
encoding character(32) 列的编码。
distkey boolean 如果此列为表的分配键,则为 true。
sortkey integer 排序键中的列的顺序。如果表使用一个复合排序键,则排序键中的所有列将具有一个正值,该值指示列在排序键中的位置。如果表使用交错排序键,则排序键中的所有列将具有一个正值或负值,其中,绝对值指示列在排序键中的位置。如果为 0,则列不是排序键的一部分。
notnull boolean 如果列具有 NOT NULL 约束,则为 true。

示例

以下示例显示 LINEORDER_COMPOUND 表的复合排序键列。

Copy
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 表的交错排序键列。

Copy
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 将仅返回搜索路径中包含的 schema 中的表的信息。请参阅search_path

例如,假定您创建一个新 schema 和一个新表,然后查询 PG_TABLE_DEF。

Copy
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 的设置。

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

demo schema 添加到搜索路径并重新执行查询。

Copy
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)

本页内容: