Beispiele für Katalogabfragen - Amazon Redshift

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Beispiele für Katalogabfragen

Die folgenden Abfragen zeigen einige Möglichkeiten für die Abfrage von Katalogtabellen, um nützliche Informationen zu einer Amazon-Redshift-Datenbank zu erhalten.

Anzeige von Tabellen-ID, Datenbank, Schema und Tabellenname

Die folgende Ansichtsdefinition verbindet die Systemtabelle STV_TBL_PERM mit den Systemkatalogtabellen PG_CLASS, PG_NAMESPACE und PG_DATABASE zur Ausgabe von Tabellen-ID, Datenbankname, Schemaname und Tabellenname.

create view tables_vw as select distinct(stv_tbl_perm.id) table_id ,trim(pg_database.datname) db_name ,trim(pg_namespace.nspname) schema_name ,trim(pg_class.relname) table_name from stv_tbl_perm join pg_class on pg_class.oid = stv_tbl_perm.id join pg_namespace on pg_namespace.oid = pg_class.relnamespace join pg_database on pg_database.oid = stv_tbl_perm.db_id;

Das folgende Beispiel gibt die Informationen für Tabellen-ID 117855 zurück.

select * from tables_vw where table_id = 117855;
table_id | db_name | schema_name | table_name ---------+-----------+-------------+----------- 117855 | dev | public | customer

Auflisten der Anzahl der Spalten pro Amazon-Redshift-Tabelle

Die folgende Abfrage verknüpft einige Katalogtabellen, um herauszufinden, wie viele Spalten jede Amazon-Redshift-Tabelle enthält. Amazon-Redshift-Tabellennamen werden sowohl in PG_TABLES als auch in STV_TBL_PERM gespeichert. Verwenden Sie nach Möglichkeit PG_Tables, um Amazon-Redshift-Tabellennamen zurückzunehmen.

Diese Abfrage beinhaltet keine Amazon-Redshift-Tabellen.

select nspname, relname, max(attnum) as num_cols from pg_attribute a, pg_namespace n, pg_class c where n.oid = c.relnamespace and a.attrelid = c.oid and c.relname not like '%pkey' and n.nspname not like 'pg%' and n.nspname not like 'information%' group by 1, 2 order by 1, 2; nspname | relname | num_cols --------+----------+---------- public | category | 4 public | date | 8 public | event | 6 public | listing | 8 public | sales | 10 public | users | 18 public | venue | 5 (7 rows)

Auflisten der Schemata und Tabellen in einer Datenbank

Die folgende Abfrage verbindet STV_TBL_PERM mit einigen PG-Tabellen zur Ausgabe einer Liste von Tabellen in der TICKIT-Datenbank und ihrer Schemanamen (Spalte NSPNAME). Dazu gibt die Abfrage die Gesamtzahl der Zeilen in jeder Tabelle aus. (Diese Abfrage ist nützlich, wenn mehrere Schemata in Ihrem System die gleichen Tabellennamen haben.)

select datname, nspname, relname, sum(rows) as rows from pg_class, pg_namespace, pg_database, stv_tbl_perm where pg_namespace.oid = relnamespace and pg_class.oid = stv_tbl_perm.id and pg_database.oid = stv_tbl_perm.db_id and datname ='tickit' group by datname, nspname, relname order by datname, nspname, relname; datname | nspname | relname | rows --------+---------+----------+-------- tickit | public | category | 11 tickit | public | date | 365 tickit | public | event | 8798 tickit | public | listing | 192497 tickit | public | sales | 172456 tickit | public | users | 49990 tickit | public | venue | 202 (7 rows)

Listet Tabellen, Datentypen IDs, Spaltennamen und Tabellennamen auf

Die folgende Abfrage listet einige Informationen zu jeder Benutzertabelle und ihren Spalten aus: Tabellen-ID, Tabellenname, die Namen der Spalten sowie den Datentyp jeder Spalte:

select distinct attrelid, rtrim(name), attname, typname from pg_attribute a, pg_type t, stv_tbl_perm p where t.oid=a.atttypid and a.attrelid=p.id and a.attrelid between 100100 and 110000 and typname not in('oid','xid','tid','cid') order by a.attrelid asc, typname, attname; attrelid | rtrim | attname | typname ---------+----------+----------------+----------- 100133 | users | likebroadway | bool 100133 | users | likeclassical | bool 100133 | users | likeconcerts | bool ... 100137 | venue | venuestate | bpchar 100137 | venue | venueid | int2 100137 | venue | venueseats | int4 100137 | venue | venuecity | varchar ...

Zählen der Anzahl der Datenblöcke für jede Spalte in einer Tabelle

Die folgende Abfrage verbindet die Tabelle STV_BLOCKLIST mit PG_CLASS zur Ausgabe von Speicherinformationen für die Spalten in der Tabelle SALES.

select col, count(*) from stv_blocklist s, pg_class p where s.tbl=p.oid and relname='sales' group by col order by col; col | count ----+------- 0 | 4 1 | 4 2 | 4 3 | 4 4 | 4 5 | 4 6 | 4 7 | 4 8 | 4 9 | 8 10 | 4 12 | 4 13 | 8 (13 rows)