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

Für CREATE SCHEMA sind folgende Berechtigungen erforderlich:

  • Superuser

  • Benutzer mit der Berechtigung CREATE SCHEMA

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

IF 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 beim Scripting nützlich, damit das Skript nicht fehlschlägt, wenn CREATE SCHEMA versucht, ein Schema zu erstellen, das bereits vorhanden ist.

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. Er enthält alle permanenten Tabellen, materialisierten Ansichten unter dem angegebenen Schema und doppelte Kopien aller Tabellen mit ALL-Verteilung auf jedem Rechenknoten. 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 die CREATE SCHEMA-Berechtigung besitzt, 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 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 von VACUUM im Hintergrund und internen Bereinigungen ist es möglich, dass ein Schema zu dem Zeitpunkt, zu dem Sie es nach einer abgebrochenen Transaktion prüfen, nicht voll ist.

Ausnahmsweise ignoriert Amazon Redshift die Kontingentverletzung und führt in bestimmten Fällen Transaktionen durch. Amazon Redshift geht so für Transaktionen vor, die nur aus einer oder mehreren der folgenden Anweisungen bestehen, wenn es keine INSERT- oder COPY-Erfassungsanweisung in derselben Transaktion gibt:

  • DELETE

  • TRUNCATE

  • VACUUM

  • DROP TABLE

  • ALTER TABLE APPEND, nur 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_SALES erstellt, und der Benutzer DWUSER ist der Besitzer:

create schema us_sales authorization dwuser;

Im folgenden Beispiel wird ein Schema mit dem Namen US_SALES erstellt, der Benutzer DWUSER als Besitzer eingerichtet und das Kontingent auf 50 GB festgelegt.

create schema us_sales authorization dwuser QUOTA 50 GB;

Um das neue Schema anzuzeigen, führen Sie eine Abfrage für die Katalogtabelle PG_NAMESPACE aus, wie nachfolgend 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 Schema US_SALES erstellt, oder es erfolgt keine Aktion und es wird eine Nachricht zurückgegeben, wenn das Schema bereits vorhanden ist:

create schema if not exists us_sales;