PG_TABLE_DEF - Amazon Redshift

PG_TABLE_DEF

Speichert Informationen zu Tabellenspalten.

PG_TABLE_DEF gibt nur Informationen zu Tabellen zurück, die für den Benutzer sichtbar sind. Wenn PG_TABLE_DEF nicht die erwarteten Ergebnisse ausgibt, prüfen Sie, ob der Parameter search_path korrekt so eingestellt ist, dass die relevanten Schemata eingeschlossen sind.

Mit SVV_TABLE_INFO können Sie umfassendere Informationen zu einer Tabelle anzeigen, einschließlich der Datenverteilungsverzerrung, der Schlüsselverteilungsverzerrung, der Tabellengröße und statistischer Daten.

Tabellenspalten

Spaltenname Datentyp Beschreibung
schemaname Name Schemaname.
tablename Name Tabellenname.
column Name Spaltenname.
type Text Datentyp der Spalte.
encoding character(32) Kodierung der Spalte.
distkey Boolean „True“, wenn diese Spalte der Verteilungsschlüssel für die Tabelle ist.
sortkey integer Reihenfolge der Spalte im Sortierschlüssel. Wenn die Tabelle einen zusammengesetzten Sortierschlüssel verwendet, haben alle zu dem Sortierschlüssel gehörenden Spalten einen positiven Wert, der die Position der Spalte in dem Sortierschlüssel angibt. Wenn eine Tabelle einen überlappenden Sortierschlüssel verwendet, hat jede zu dem Sortierschlüssel gehörende Spalte einen positiven oder negativen Wert, wobei der absolute Wert die Position der Spalte in dem Sortierschlüssel angibt. Bei 0 gehört die Spalte nicht zu einem Sortierschlüssel.
notnull Boolean „True“, wenn für die Spalte eine NOT NULL-Einschränkung gilt.

Example

Das folgende Beispiel zeigt die zusammengesetzten Sortierschlüsselspalten für die Tabelle 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)

Das folgende Beispiel zeigt die überlappenden Sortierschlüsselspalten für die Tabelle 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 gibt nur Informationen für Tabellen in Schemata aus, die zum Suchpfad gehören. Weitere Informationen finden Sie unter search_path.

Nehmen Sie beispielsweise an, Sie erstellen ein neues Schema und eine neue Tabelle und fragen dann PG_TABLE_DEF ab.

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 ----------+---------+------+------+----------+---------+---------+--------

Die Abfrage gibt für die neue Tabelle keine Zeilen zurück. Prüfen Sie die Einstellung für search_path.

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

Fügen Sie das Schema demo zum Suchpfad hinzu und führen Sie die Abfrage erneut aus.

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)