PG_TABLE_DEF - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

PG_TABLE_DEF

Archivia le informazioni sulle colonne di tabella.

PG_TABLE_DEF restituisce solo le informazioni sulle tabelle visibili all'utente. Se PG_TABLE_DEF non restituisce i risultati previsti, verifica che il parametro search_path sia impostato correttamente per includere gli schemi rilevanti.

Puoi usare SVV_TABLE_INFO per visualizzare informazioni più complete su una tabella, incluse differenze di distribuzione dei dati, differenze di distribuzione delle chiavi, dimensioni della tabella e statistiche.

Colonne di tabella

Nome colonna Tipo di dati Descrizione
schemaname name Nome schema.
tablename name Nome tabella.
column name Nome della colonna.
type text Tipo di dati della colonna.
encoding character(32) Codifica della colonna.
distkey booleano VERO se la colonna corrisponde alla chiave di distribuzione per la tabella.
sortkey integer Ordine della colonna nella chiave di ordinamento. Se la tabella usa una chiave di ordinamento composta, tutte le colonne che fanno parte della chiave di ordinamento hanno un valore positivo che indica la posizione della colonna nella chiave di ordinamento. Se la tabella usa una chiave di ordinamento con interlacciamento, ogni colonna che fa parte della chiave di ordinamento ha un valore alternativamente positivo o negativo, il cui valore assoluto indica la posizione della colonna nella chiave di ordinamento. Se il valore è 0, la colonna non fa parte di una chiave di ordinamento.
notnull booleano True se la colonna ha un vincolo NOT NULL.

Esempio

L'esempio seguente mostra le colonne della chiave di ordinamento composta per la tabella 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)

L'esempio seguente mostra le colonne della chiave di ordinamento con interfoliazione per la tabella 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 restituisce solo le informazioni per le tabelle negli schemi che fanno parte del percorso di ricerca. Per ulteriori informazioni, consultare search_path.

Supponi, ad esempio, di creare un nuovo schema e una nuova tabella e quindi di eseguire una query su 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 ----------+---------+------+------+----------+---------+---------+--------

La query non restituisce righe per la nuova tabella. Esamina l'impostazione di search_path.

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

Aggiungi lo schema demo al percorso di ricerca ed esegui di nuovo la query.

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)