CREATE SCHEMA - 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.

CREATE SCHEMA

Definiert ein neues Schema für die aktuelle Datenbank.

Erforderliche Berechtigungen

Folgende Rechte sind erforderlich für: CREATE SCHEMA

  • Superuser

  • Benutzer mit dem CREATE SCHEMA Privileg

Syntax

CREATE SCHEMA [ IF NOT EXISTS ] schema_name [ AUTHORIZATION username ] [ QUOTA {quota [MB | GB | TB] | UNLIMITED} ] [ schema_element [ ... ] CREATE SCHEMA AUTHORIZATION username[ QUOTA {quota [MB | GB | TB] | UNLIMITED} ] [ schema_element [ ... ] ]

Parameter

WENN NOT EXISTS

Eine Klausel, die angibt, dass der Befehl keine Änderungen ausführen und die Meldung zurückgeben soll, dass das Schema vorhanden ist, statt mit einem Fehler beendet zu werden, wenn das angegebene Schema bereits vorhanden ist.

Diese Klausel ist bei der Skripterstellung nützlich, damit das Skript nicht fehlschlägt, wenn CREATE SCHEMA versucht wird, ein Schema zu erstellen, das bereits existiert.

schema_name

Der Name des neuen Schemas. Der Schemaname darf nicht sein PUBLIC. Weitere Informationen zu gültigen Namen finden Sie unter Namen und Kennungen.

Anmerkung

Die Liste der Schemata im Konfigurationsparameter search_path legt die Rangfolge von identisch benannten Objekten fest, wenn sie ohne Schemanamen referenziert werden.

AUTHORIZATION

Eine Klausel, die einem bestimmten Benutzer den Besitz gewährt.

username (Benutzername

Der Name des Schemabesitzers.

schema_element

Definition für ein oder mehrere Objekte, die innerhalb des Schemas erstellt werden sollen.

QUOTA

Die maximale Menge an Speicherplatz, die das angegebene Schema verwenden kann. Dieser Platz ist die gemeinsame Speichernutzung. Sie umfasst alle permanenten Tabellen, materialisierten Ansichten unter dem angegebenen Schema und doppelte Kopien aller Tabellen, die auf jedem ALL Rechenknoten verteilt sind. Das Schemakontingent berücksichtigt keine temporären Tabellen, die als Teil eines temporären Namespaces oder Schemas erstellt wurden.

Um die konfigurierten Schemakontingente anzuzeigen, siehe SVV_SCHEMA_QUOTA_STATE.

Um die Datensätze anzuzeigen, bei denen die Schemakontingente überschritten wurden, siehe STL_SCHEMA_QUOTA_VIOLATIONS.

Amazon Redshift konvertiert den ausgewählten Wert in Megabyte. Gigabyte ist die Standardmaßeinheit, wenn Sie keinen Wert angeben.

Sie müssen ein Datenbank-Superuser sein, um ein Schema-Kontingent festzulegen und zu ändern. Ein Benutzer, der kein Superuser ist, aber über die CREATE SCHEMA entsprechende Berechtigung verfügt, kann ein Schema mit einem definierten Kontingent erstellen. Wenn Sie ein Schema erstellen, ohne ein Kontingent zu definieren, verfügt das Schema über ein unbegrenztes Kontingent. Wenn Sie das Kontingent unter den aktuellen Wert setzen, der vom Schema verwendet wird, erlaubt Amazon Redshift keine weitere Aufnahme, bis Sie Speicherplatz freigeben. Eine DELETE Anweisung löscht Daten aus einer Tabelle und Speicherplatz wird nur freigegeben, wenn sie VACUUM ausgeführt wird.

Amazon Redshift prüft jede Transaktion auf Kontingentverletzungen, bevor die Transaktion übertragen wird. Amazon Redshift vergleicht die Größe (den von allen Tabellen in einem Schema verwendeten Speicherplatz) jedes geänderten Schemas mit dem festgelegten Kontingent. Da die Kontingentverletzungsprüfung am Ende einer Transaktion erfolgt, kann die Größenbeschränkung das Kontingent vorübergehend innerhalb einer Transaktion überschreiten, bevor sie festgeschrieben wird. Wenn eine Transaktion das Kontingent überschreitet, bricht Amazon Redshift die Transaktion ab, verhindert nachfolgende Erfassungen und macht alle Änderungen rückgängig, bis wieder freier Speicherplatz vorhanden ist. Aufgrund der Hintergrundbereinigung VACUUM und der internen Bereinigung ist es möglich, dass ein Schema nicht voll ist, wenn Sie das Schema nach einer abgebrochenen Transaktion überprüfen.

Ausnahmsweise ignoriert Amazon Redshift die Kontingentverletzung und führt in bestimmten Fällen Transaktionen durch. Amazon Redshift tut dies für Transaktionen, die ausschließlich aus einer oder mehreren der folgenden Anweisungen bestehen, bei denen es in derselben Transaktion keine Anweisung INSERT oder COPY Aufnahme gibt:

  • DELETE

  • TRUNCATE

  • VACUUM

  • DROP TABLE

  • ALTERTABLEAPPENDnur beim Verschieben von Daten aus dem vollständigen Schema in ein anderes, nicht vollständiges Schema

UNLIMITED

Amazon Redshift legt keine Begrenzung für das Wachstum der Gesamtgröße des Schemas fest.

Einschränkungen

Amazon Redshift erzwingt die folgenden Limits für Schemata.

  • Pro Datenbank sind höchstens 9900 Schemata zulässig.

Beispiele

Im folgenden Beispiel wird ein Schema mit dem Namen US_ erstellt SALES und dem Benutzer die Eigentümerschaft übertragen. DWUSER

create schema us_sales authorization dwuser;

Das folgende Beispiel erstellt ein Schema mit dem Namen US_SALES, überträgt dem Benutzer DWUSER die Eigentümerschaft und legt das Kontingent auf 50 GB fest.

create schema us_sales authorization dwuser QUOTA 50 GB;

Um das neue Schema anzuzeigen, fragen Sie die NAMESPACE PG_-Katalogtabelle ab, wie im Folgenden gezeigt.

select nspname as schema, usename as owner from pg_namespace, pg_user where pg_namespace.nspowner = pg_user.usesysid and pg_user.usename ='dwuser'; schema | owner ----------+---------- us_sales | dwuser (1 row)

Im folgenden Beispiel wird entweder das SALES US_-Schema erstellt oder es wird nichts unternommen und eine Meldung zurückgegeben, falls es bereits vorhanden ist.

create schema if not exists us_sales;