PG_TABLE_DEF - Amazon Redshift

PG_TABLE_DEF

Armazena informações sobre colunas de tabela.

PG_TABLE_DEF retorna somente informações sobre tabelas visíveis para o usuário. Se PG_TABLE_DEF não retornar os resultados esperados, verifique se o parâmetro search_path está definido corretamente para incluir os esquemas relevantes.

Você pode usar SVV_TABLE_INFO para visualizar mais informações abrangentes sobre uma tabela, inclusive distorção dos dados, distorção da distribuição da chave, tamanho da tabela e estatísticas.

Colunas da tabela

Nome da coluna Tipo de dados Descrição
schemaname name Nome do esquema.
tablename name Nome da tabela.
column name Nome da coluna.
tipo text Datatype da coluna.
encoding character(32) Codificação da coluna.
distkey booliano Verdadeiro se essa coluna for a chave de distribuição da tabela.
sortkey inteiro Ordem da coluna na chave de classificação. Se a tabela usar uma chave de classificação composta, todas as colunas que fizerem parte da chave de classificação terão um valor positivo que indicará a posição da coluna na chave de classificação. Se a tabela usar uma chave de classificação intercalada, cada coluna que fizer parte da chave de classificação terá um valor alternadamente positivo ou negativo, onde o valor absoluto indica a posição da coluna na chave de classificação. Se 0, a coluna não fará parte de uma chave de classificação.
notnull boolean Verdadeiro se a coluna tiver uma restrição NOT NULL.

Exemplo

O exemplo a seguir mostra as colunas da chave de classificação composta da tabela 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)

O exemplo a seguir mostra as colunas da chave de classificação intercalada da tabela 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 retornará somente informações de tabelas nos esquemas incluídos no caminho de pesquisa. Para ter mais informações, consulte search_path.

Por exemplo, suponhamos que você crie um novo esquema e uma nova tabela e, em seguida, consulte 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 ----------+---------+------+------+----------+---------+---------+--------

A consulta não retorna linhas para a nova tabela. Examine a configuração de search_path.

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

Adicione o esquema demo ao caminho de pesquisa e execute a consulta novamente.

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)