Das Informationsschema ist ein integriertes Schema, über das alle PostgreSQL-Datenbanken verfügen. Sie können SQL-Abfragen für Tabellen im information_schema ausführen, um Schemametadaten für eine Datenbank abzurufen.
Mit der folgenden Abfrage etwa werden die Namen aller benutzerdefinierten Tabellen in einer Datenbank abgerufen:
SELECT
table_schema,
table_name
FROM
information_schema.tables
WHERE
table_schema NOT IN ('pg_catalog', 'information_schema', 'SPANNER_SYS')
AND table_type = 'BASE TABLE'
Nutzung
Auf
information_schema-Tabellen kann nur über SQL-Oberflächen zugegriffen werden. Beispiel:- Mit der
executeQueryAPI - Befehl
gcloud spanner databases execute-sql - Die Seite Abfrage einer Datenbank in der Google Cloud Console.
Andere Einzellesemethoden unterstützen
information_schemanicht.- Mit der
- Abfragen für
information_schemakönnen starke Zeitstempelgrenzen, Zeitstempelgrenzen mit begrenzter Veralterung oder Zeitstempelgrenzen mit exakter Veralterung verwenden. - Wenn Sie eine Datenbank mit GoogleSQL-Dialekt verwenden, lesen Sie den Abschnitt Informationsschema für Datenbanken mit GoogleSQL-Dialekt.
Unterschiede zu information_schema für PostgreSQL
Die Tabellen in der information_schema für Datenbanken mit PostgreSQL-Dialekt enthalten Spalten aus den Tabellen in der information_schema für Open-Source-PostgreSQL und in einigen Fällen auch Spalten aus Spanner. In diesen Tabellen werden die Open-Source-PostgreSQL-Spalten zuerst und in derselben Reihenfolge wie für eine Open-Source-PostgreSQL-Datenbank aufgeführt. Alle eindeutigen Spanner-Spalten werden danach angehängt. Für die Open-Source-PostgreSQL-Version von information_schema geschriebene Abfragen sollten ohne Änderungen funktionieren, wenn Sie Datenbanken mit PostgreSQL-Dialekt in der Google Cloud CLI verwenden.
Weitere wichtige Unterschiede im information_schema für PostgreSQL-Dialektdatenbanken:
- Einige der Tabellenspalten für Open-Source-PostgreSQL sind verfügbar, werden aber in Datenbanken im PostgreSQL-Dialekt nicht ausgefüllt.
- Bei Datenbanken im PostgreSQL-Dialekt wird
publicals Standardschemaname verwendet. - Automatisch generierte Einschränkungsnamen haben ein anderes Format als Open-Source-PostgreSQL-Datenbanken.
- Tabellen, die sich auf Open-Source-PostgreSQL-Funktionen beziehen, die in Datenbanken im PostgreSQL-Dialekt nicht unterstützt werden, sind nicht verfügbar.
- Einige Tabellen, die in Spanner, aber nicht in Open-Source-PostgreSQL verfügbar sind, z. B.
database_options,index_columns,indexesundspanner_statistics, sind verfügbar.
Zeilenfilterung in information_schema-Tabellen und ‑Ansichten
Hauptkonten mit IAM-Berechtigungen auf Datenbankebene und Hauptkonten, denen Zugriff auf die spanner_info_reader-Systemrolle (oder auf Mitglieder dieser Rolle) gewährt wurde, können alle Zeilen in allen information_schema-Tabellen und ‑Ansichten sehen. Bei anderen Identitäten filtert Spanner Zeilen basierend auf der aktuellen Datenbankrolle. In den Tabellen- und Ansichtsbeschreibungen in den folgenden Abschnitten wird angegeben, wie Spanner Zeilen für die einzelnen Tabellen und Ansichten filtert.
Tabellen in information_schema für Datenbanken im PostgreSQL-Dialekt
Die Tabellen und Ansichten in information_schema sind mit den Tabellen und Ansichten in information_schema von Open-Source-PostgreSQL kompatibel.
In den folgenden Abschnitten werden die Tabellen und Ansichten im information_schema für Datenbanken mit PostgreSQL-Dialekt beschrieben.
applicable_roles
In dieser zeilengefilterten Ansicht werden alle Rollenzuweisungen aufgeführt, die explizit allen Datenbankrollen gewährt werden. Hauptkonten mit IAM-Berechtigungen auf Datenbankebene und Hauptkonten, denen Zugriff auf die Systemrolle spanner_info_reader oder auf Mitglieder dieser Rolle gewährt wurde, können alle Zeilen in dieser Ansicht sehen. Alle anderen Hauptkonten können nur die Rollenzuweisungen sehen, die der aktuellen Datenbankrolle oder einer Rolle gewährt werden, deren Mitglied die aktuelle Datenbankrolle ist.
Da alle Datenbankrollen Mitglieder der öffentlichen Rolle sind, werden in den Ergebnissen keine Datensätze für die implizite Mitgliedschaft in der öffentlichen Rolle berücksichtigt.
| Spaltenname | Typ | Beschreibung |
|---|---|---|
grantee |
character varying |
Der Name der Datenbankrolle, für die die Mitgliedschaft gewährt wird. |
role_name |
character varying |
Der Name der übergeordneten Datenbankrolle, in der diese Mitgliedschaft gewährt wird. |
is_grantable |
character varying |
Nicht verwendet. Immer NO. |
change_stream_columns
Diese nach Zeilen gefilterte Ansicht enthält Informationen zu Tabellenspalten und den Änderungsstreams, die sie beobachten. Jede Zeile beschreibt einen Änderungsstream und eine Spalte. Wenn ein Änderungsstream eine ganze Tabelle verfolgt, werden die Spalten in dieser Tabelle in dieser Ansicht nicht angezeigt.
Hauptkonten mit IAM-Berechtigungen auf Datenbankebene und Hauptkonten, denen Zugriff auf die Systemrolle spanner_info_reader oder auf Mitglieder dieser Rolle gewährt wurde, können alle Zeilen in dieser Ansicht sehen. Alle anderen Principals können nur Zeilen für Änderungsstreams sehen, für die die Berechtigung SELECT der aktuellen Datenbankrolle, Rollen, denen die aktuelle Datenbankrolle angehört, oder public gewährt wird.
| Spaltenname | Typ | Beschreibung |
|---|---|---|
change_stream_catalog |
character varying |
Der Datenbankname. |
change_stream_schema |
character varying |
Der Name des Schemas des Änderungsstreams. Bei Datenbanken mit PostgreSQL-Dialekt ist der Standardwert public. |
change_stream_name |
character varying |
Der Name des Änderungsstreams. |
table_catalog |
character varying |
Der Datenbankname. |
table_schema |
character varying |
Der Name des Schemas der Tabelle. Bei Datenbanken mit PostgreSQL-Dialekt ist der Standardwert public. |
table_name |
character varying |
Der Name der Tabelle, auf die sich diese Zeile bezieht. |
column_name |
character varying |
Der Name der Spalte, auf die sich diese Zeile bezieht. |
change_stream_options
Diese nach Zeilen gefilterte Ansicht enthält die Konfigurationsoptionen für Änderungsstreams.
Hauptkonten mit IAM-Berechtigungen auf Datenbankebene und Hauptkonten, denen Zugriff auf die Systemrolle spanner_info_reader oder auf Mitglieder dieser Rolle gewährt wurde, können alle Zeilen in dieser Ansicht sehen. Alle anderen Principals sehen nur Optionen für Änderungsstreams, für die die Berechtigung SELECT für die aktuelle Datenbankrolle, für Rollen, zu denen die aktuelle Datenbankrolle gehört, oder für public gewährt wird.
| Spaltenname | Typ | Beschreibung |
|---|---|---|
change_stream_catalog |
character varying |
Der Datenbankname. |
change_stream_schema |
character varying |
Der Name des Schemas des Änderungsstreams. Bei Datenbanken mit PostgreSQL-Dialekt ist der Standardwert public. |
change_stream_name |
character varying |
Der Name des Änderungsstreams. |
option_name |
character varying |
Der Name der Änderungsstream-Option. |
option_type |
character varying |
Der Datentyp der Änderungsstream-Option. |
option_value |
character varying |
Der Wert der Änderungsstream-Option. |
change_stream_privileges
In dieser zeilengefilterten Ansicht werden alle Berechtigungen für die detaillierte Zugriffssteuerung aufgeführt, die für alle Änderungsstreams für eine beliebige Datenbankrolle gewährt wurden, einschließlich public. Hauptkonten mit IAM-Berechtigungen auf Datenbankebene und Hauptkonten, denen Zugriff auf die Systemrolle spanner_info_reader oder auf Mitglieder dieser Rolle gewährt wurde, können alle Zeilen in dieser Ansicht sehen. Alle anderen Hauptkonten können nur Berechtigungen sehen, die für Änderungsstreams für die aktuelle Datenbankrolle, für Rollen, zu denen die aktuelle Datenbankrolle gehört, oder für public gewährt wurden.
| Spaltenname | Typ | Beschreibung |
|---|---|---|
grantor |
character varying |
Nicht verwendet. Immer NULL. |
grantee |
character varying |
Der Name der Datenbankrolle, der diese Berechtigung gewährt wird. |
change_stream_catalog |
character varying |
Der Datenbankname. |
change_stream_schema |
character varying |
Der Name des Schemas, das den Änderungsstream enthält.
Der Standardwert ist public für Datenbanken mit PostgreSQL-Dialekt. |
change_stream_name |
character varying |
Der Name des Änderungsstreams. |
privilege_type |
character varying |
Der Typ der Berechtigung (nur SELECT). |
is_grantable |
character varying |
Nicht verwendet. Immer NO. |
change_stream_tables
Diese nach Zeilen gefilterte Ansicht enthält Informationen zu Tabellen und den Änderungsstreams, die sie beobachten. Jede Zeile beschreibt eine Tabelle und einen Änderungsstream. Hauptkonten mit IAM-Berechtigungen auf Datenbankebene und Hauptkonten, denen Zugriff auf die Systemrolle spanner_info_reader oder auf Mitglieder dieser Rolle gewährt wurde, können alle Zeilen in dieser Ansicht sehen. Alle anderen Hauptkonten können nur Zeilen für Änderungsstreams sehen, für die die Berechtigung SELECT der aktuellen Datenbankrolle, Rollen, denen die aktuelle Datenbankrolle angehört, oder public gewährt wird.
Die Daten in change_stream_tables enthalten nicht die impliziten Beziehungen zwischen Tabellen und Änderungsstreams, die die gesamte Datenbank erfassen.
| Spaltenname | Typ | Beschreibung |
|---|---|---|
change_stream_catalog |
character varying |
Der Datenbankname. |
change_stream_schema |
character varying |
Der Name des Schemas des Änderungsstreams. Bei Datenbanken mit PostgreSQL-Dialekt ist der Standardwert public. |
change_stream_name |
character varying |
Der Name des Änderungsstreams, auf den sich diese Zeile bezieht. |
table_catalog |
character varying |
Der Datenbankname. |
table_schema |
character varying |
Der Name des Schemas der Tabelle. Bei Datenbanken mit PostgreSQL-Dialekt ist der Standardwert public. |
table_name |
character varying |
Der Name der Tabelle, auf die sich diese Zeile bezieht. |
all_columns |
character varying |
YES, wenn der Änderungsstream dieser Zeile die gesamte Tabelle verfolgt, auf die sich diese Zeile bezieht. Andernfalls NO. Gemäß dem SQL-Standard ist der String entweder YES oder NO und kein boolescher Wert. |
change_streams
In dieser zeilengefilterten Ansicht werden alle Änderungsstreams einer Datenbank aufgeführt. Außerdem wird angegeben, welche Streams die gesamte Datenbank und welche bestimmte Tabellen oder Spalten verfolgen. Hauptkonten mit IAM-Berechtigungen auf Datenbankebene und Hauptkonten, denen Zugriff auf die Systemrolle spanner_info_reader oder auf Mitglieder dieser Rolle gewährt wurde, können alle Zeilen in dieser Ansicht sehen. Alle anderen Principals können nur Änderungsstreams sehen, für die die detaillierte Zugriffssteuerungsberechtigung SELECT für die aktuelle Datenbankrolle, für Rollen, zu denen die aktuelle Datenbankrolle gehört, oder für public erteilt wurde.
| Spaltenname | Typ | Beschreibung |
|---|---|---|
change_stream_catalog |
character varying |
Der Datenbankname. |
change_stream_schema |
character varying |
Der Name des Schemas dieses Änderungsstreams. Bei Datenbanken mit PostgreSQL-Dialekt ist der Standardwert public. |
change_stream_name |
character varying |
Der Name des Änderungsstreams. |
all |
character varying |
YES, wenn dieser Änderungsstream die gesamte Datenbank verfolgt.
NO, wenn dieser Änderungsstream bestimmte Tabellen oder Spalten verfolgt.
Gemäß dem SQL-Standard ist der String entweder YES oder NO und kein boolescher Wert. |
check_constraints
Die Ansicht check_constraints enthält eine Zeile für jede Check-Einschränkung, die entweder durch den CHECK- oder den NOT NULL-Suchbegriff definiert ist.
| Spaltenname | Typ | Beschreibung |
|---|---|---|
constraint_catalog |
character varying |
Der Datenbankname. |
constraint_schema |
character varying |
Der Name des Schemas der Einschränkung. Der Standardwert ist public für Datenbanken mit PostgreSQL-Dialekt. |
constraint_name |
character varying |
Der Name der Einschränkung. Wenn der Name der Einschränkung nicht explizit im Schema angegeben ist, wird der automatisch generierte Name verwendet. |
check_clause |
character varying |
Der Ausdruck der Diagnoseeinschränkung. |
spanner_state |
character varying |
Der aktuelle Status der Prüfeinschränkung. Folgende Status sind möglich:
|
column_column_usage
In dieser Ansicht werden alle generierten Spalten aufgeführt, die von einer anderen Basisspalte in derselben Tabelle abhängen.
| Spaltenname | Typ | Beschreibung |
|---|---|---|
table_catalog |
character varying |
Der Datenbankname. |
table_schema |
character varying |
Der Name des Schemas, das die Tabelle enthält. Der Name ist public für das Standardschema und nicht leer für andere Schemas (z. B. information_schema selbst). Diese Spalte ist nie Null. |
table_name |
character varying |
Der Name der Tabelle, die die generierten Spalten enthält. |
column_name |
character varying |
Der Name der Basisspalte, von der die generierte Spalte abhängt. |
dependent_column |
character varying |
Der Name der generierten Spalte. |
column_options
In dieser Ansicht werden alle Optionen aufgeführt, die für die referenzierten Tabellenspalten einer Fremdschlüsseleinschränkung definiert sind. Die Ansicht enthält nur die Spalten in der Referenztabelle, auf die der aktuelle Nutzer Zugriff hat (entweder als Inhaber oder durch gewährte Berechtigungen).
| Spaltenname | Typ | Beschreibung |
|---|---|---|
table_catalog |
character varying |
Der Datenbankname. |
table_schema |
character varying |
Der Name des Schemas, das die externe Tabelle enthält. Der Name ist public für das Standardschema und nicht leer für andere Schemas (z. B. information_schema selbst). Diese Spalte ist nie Null. |
table_name |
character varying |
Der Name der Fremdtabelle. |
column_name |
character varying |
Der Name der Spalte. |
option_name |
character varying |
Eine SQL-Kennung, die die Option eindeutig identifiziert. Diese Kennung ist der Schlüssel der OPTIONS-Klausel in DDL.
|
option_value |
character varying |
Ein SQL-Literal, das den Wert dieser Option beschreibt. Der Wert dieser Spalte kann als Teil einer Abfrage analysiert werden. |
option_type |
character varying |
Ein Datentypname, der der Typ dieses Optionswerts ist. |
column_privileges
In dieser zeilengefilterten Ansicht werden alle Berechtigungen für die detaillierte Zugriffssteuerung aufgeführt, die für alle Spalten für eine beliebige Datenbankrolle gewährt wurden, einschließlich public. Hauptkonten mit IAM-Berechtigungen auf Datenbankebene und Hauptkonten, denen Zugriff auf die Systemrolle spanner_info_reader oder auf Mitglieder dieser Rolle gewährt wurde, können alle Zeilen in dieser Ansicht sehen. Alle anderen Hauptkonten können nur Berechtigungen sehen, die für Spalten der aktuellen Datenbankrolle, für Rollen, denen die aktuelle Datenbankrolle angehört, oder für public erteilt wurden.
Die Ansicht enthält die Berechtigungen SELECT, INSERT und UPDATE, die die Spalte von der Tabelle oder Ansicht erbt, die die Spalte enthält.
| Spaltenname | Typ | Beschreibung |
|---|---|---|