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

Erstellt ein neues externes Schema in der aktuellen Datenbank. Sie können dieses externe Schema verwenden, um sich mit Amazon-RDS-for-PostgreSQL- oder mit Amazon-Aurora-for-PostgreSQL-kompatible-Edition-Datenbanken zu verbinden. Sie können auch ein externes Schema erstellen, das auf eine Datenbank in einem externen Datenkatalog wie AWS Glue Athena oder auf eine Datenbank in einem Apache Hive-Metastore wie Amazon EMR verweist.

Der Besitzer dieses Schemas gibt den Befehl CREATE EXTERNAL SCHEMA aus. Mit dem Befehl ALTER SCHEMA können Sie den Besitzer eines externen Schemas ändern. Mit dem Befehl GRANT gewähren Sie anderen Benutzern oder Benutzergruppen Zugriff auf das Schema.

Sie können die Befehle GRANT oder REVOKE nicht für Berechtigungen in einer externen Tabelle verwenden. Gewähren oder widerrufen Sie stattdessen die Berechtigungen für das externe Schema.

Anmerkung

Wenn Sie derzeit externe Redshift-Spectrum-Tabellen im Amazon-Athena-Datenkatalog haben, können Sie Ihren Athena-Datenkatalog zu einem -Datenkatalog migrieren AWS Glue Data Catalog. Um den AWS Glue Datenkatalog mit Redshift Spectrum zu verwenden, müssen Sie möglicherweise Ihre AWS Identity and Access Management (IAM-) Richtlinien ändern. Weitere Informationen finden Sie unter Upgrade auf den AWS Glue Datenkatalog im Athena-Benutzerhandbuch.

Um Details zu externen Schemata anzuzeigen, führen Sie eine Abfrage für die Systemansicht SVV_EXTERNAL_SCHEMAS aus.

Syntax

Die folgende Syntax beschreibt den Befehl CREATE EXTERNAL SCHEMA, der verwendet wird, um Daten mithilfe eines externen Datenkatalogs zu referenzieren. Weitere Informationen finden Sie unter Abfrage externer Daten mit Amazon Redshift Spectrum.

CREATE EXTERNAL SCHEMA [IF NOT EXISTS] local_schema_name
FROM { [ DATA CATALOG ] | HIVE METASTORE | POSTGRES | MYSQL | KINESIS | MSK | REDSHIFT }
[ DATABASE 'database_name' ]
[ SCHEMA 'schema_name' ]
[ REGION 'aws-region' ]
[ URI 'hive_metastore_uri' [ PORT port_number ] ]
IAM_ROLE { default | 'SESSION' | 'arn:aws:iam::<AWS-Konto-id>:role/<role-name>' }
[ SECRET_ARN 'ssm-secret-arn' ]
[ AUTHENTICATION { none | iam } ]
[ CLUSTER_ARN 'arn:aws:kafka:<region>:<AWS-Konto-id>:cluster/msk/<cluster uuid>' ]
[ CATALOG_ROLE { 'SESSION' | 'catalog-role-arn-string' } ]
[ CREATE EXTERNAL DATABASE IF NOT EXISTS ]
[ CATALOG_ID 'Amazon Web Services account ID containing Glue or Lake Formation database' ]

Die folgende Syntax beschreibt den Befehl CREATE EXTERNAL SCHEMA, der verwendet wird, um Daten mithilfe einer Verbundabfrage an RDS POSTGRES oder Aurora PostgreSQL zu referenzieren. Sie können auch ein externes Schema erstellen, das auf Streaming-Quellen wie Kinesis Data Streams verweist. Weitere Informationen finden Sie unter Abfragen von Daten mit Verbundabfragen in Amazon Redshift.

CREATE EXTERNAL SCHEMA [IF NOT EXISTS] local_schema_name
FROM POSTGRES
DATABASE 'federated_database_name' [SCHEMA 'schema_name']
URI 'hostname' [ PORT port_number ]
IAM_ROLE { default | 'arn:aws:iam::<AWS-Konto-id>:role/<role-name>' }
SECRET_ARN 'ssm-secret-arn'

Die folgende Syntax beschreibt den Befehl CREATE EXTERNAL SCHEMA, der verwendet wird, um Daten mithilfe einer Verbundabfrage an RDS MySQL oder Aurora MySQL zu referenzieren. Weitere Informationen finden Sie unter Abfragen von Daten mit Verbundabfragen in Amazon Redshift.

CREATE EXTERNAL SCHEMA [IF NOT EXISTS] local_schema_name
FROM MYSQL
DATABASE 'federated_database_name'
URI 'hostname' [ PORT port_number ]
IAM_ROLE { default | 'arn:aws:iam::<AWS-Konto-id>:role/<role-name>' }
SECRET_ARN 'ssm-secret-arn'

Die folgende Syntax beschreibt den Befehl CREATE EXTERNAL SCHEMA, der verwendet wird, um Daten in einem Kinesis-Stream zu referenzieren. Weitere Informationen finden Sie unter Streaming-Erfassung.

CREATE EXTERNAL SCHEMA [IF NOT EXISTS] schema_name
FROM KINESIS
IAM_ROLE { default | 'arn:aws:iam::<AWS-Konto-id>:role/<role-name>' }

Die folgende Syntax beschreibt den Befehl CREATE EXTERNAL SCHEMA, der verwendet wird, um auf den Cluster von Amazon Managed Streaming for Apache Kafka und die zugehörigen Themen zu verweisen, aus denen Daten erfasst werden sollen. CLUSTER_ARN gibt den Amazon-MSK-Cluster an, aus dem Sie Daten lesen. Weitere Informationen finden Sie unter Streaming-Erfassung.

CREATE EXTERNAL SCHEMA [IF NOT EXISTS] schema_name
FROM MSK
IAM_ROLE { default | 'arn:aws:iam::<AWS-Konto-id>:role/<role-name>' }
AUTHENTICATION { none | iam }
CLUSTER_ARN 'msk-cluster-arn';

Die folgende Syntax beschreibt den Befehl CREATE EXTERNAL SCHEMA, der verwendet wird, um Daten mithilfe einer datenbankübergreifenden Abfrage zu referenzieren.

CREATE EXTERNAL SCHEMA local_schema_name
FROM  REDSHIFT
DATABASE 'redshift_database_name' SCHEMA 'redshift_schema_name'

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 EXTERNAL SCHEMA versucht, ein Schema zu erstellen, das bereits vorhanden ist.

local_schema_name

Der Name des neuen externen Schemas. Weitere Informationen zu gültigen Namen finden Sie unter Namen und Kennungen.

FROM [ DATA CATALOG ] | HIVE METASTORE | POSTGRES | MYSQL | KINESIS | MSK | REDSHIFT

Ein Schlüsselwort, das angibt, wo sich die externe Datenbank befindet.

DATA CATALOG gibt an, dass die externe Datenbank im Athena-Datenkatalog oder dem definiert ist AWS Glue Data Catalog.

Wenn die externe Datenbank in einem externen Datenkatalog in einer anderen AWS -Region definiert ist, ist der Parameter REGION erforderlich. DATA CATALOG ist der Standardwert.

HIVE METASTORE gibt an, dass die externe Datenbank in einem Apache Hive-Metastore definiert ist. Wenn HIVE METASTORE angegeben ist, ist der URI erforderlich.

POSTGRES gibt an, dass die externe Datenbank in RDS PostgreSQL oder Aurora PostgreSQL definiert ist.

MYSQL zeigt an, dass die externe Datenbank in RDS MySQL oder Aurora MySQL definiert ist.

KINESIS gibt an, dass die Datenquelle ein Stream aus dem Kinesis Data Streams ist.

MSK gibt an, dass die Datenquelle ein Thema aus Amazon MSK ist.

VON REDSHIFT

Ein Schlüsselwort, das angibt, dass sich die Datenbank in Amazon Redshift befindet.

DATABASE 'redshift_database_name' SCHEMA 'redshift_schema_name'

Der Name der Amazon-Redshift-Datenbank.

Der redshift_schema_name gibt das Schema in Amazon Redshift an. Standardmäßig lautet der redshift_schema_name auf public.

DATABASE 'federated_database_name'

Ein Schlüsselwort, das den Namen der externen Datenbank in einer unterstützten PostgreSQL- oder MySQL-Datenbank-Engine angibt.

[SCHEMA 'schema_name']

Der schema_name gibt das Schema in einer unterstützten PostgreSQL-Datenbank-Engine an. Der Standard-schema_name ist public.

Sie können kein SCHEMA angeben, wenn Sie eine Verbundabfrage an eine unterstützte MySQL-Datenbank-Engine einrichten.

REGION „aws-region

Wenn die externe Datenbank in einem Athena-Datenkatalog oder in der AWS Region definiert ist AWS Glue Data Catalog, in der sich die Datenbank befindet. Dieser Parameter ist erforderlich, wenn die Datenbank in einem externen Datenkatalog definiert ist.

URI „hive_metastore_uri“ [ PORT port_number ]

Der Hostname-URI und die Portnummer einer unterstützten PostgreSQL- oder MySQL-Datenbank-Engine. Der Hostname ist der Haarknoten des Replikatsatzes. Der Endpunkt muss vom Amazon-Redshift-Cluster aus erreichbar (routingfähig) sein. Der Standardwert für port_number von PostgreSQL lautet 5432. Die Standarwert für port_number von MySQL lautet 3306.

Wenn sich die Datenbank in einem Hive-Metastore befindet, geben Sie den URI und optional die Portnummer des Metastore an. Die Standard-Portnummer ist 9083.

Ein URI enthält keine Protokollspezifikation („http://“). Beispiel für einen gültigen URI: uri '172.10.10.10'.

Anmerkung

Die unterstützte PostgreSQL- oder MySQL-Datenbank-Engine muss sich in der gleichen VPC befinden wie Ihr Amazon-Redshift-Cluster. Erstellen Sie eine Sicherheitsgruppe, die Amazon Redshift und RDS PostgreSQL oder Aurora PostgreSQL verbindet.

IAM_ROLE { default | 'SESSION' | 'arn:aws:iam::<AWS-Konto-id>:role/<role-name>' }

Verwenden Sie das Standardstichwort, damit Amazon Redshift die IAM-Rolle verwendet, die als Standard festgelegt und mit dem Cluster verknüpft ist, wenn der CREATE EXTERNAL SCHEMA-Befehl ausgeführt wird.

Verwenden Sie 'SESSION', wenn Sie über eine Verbundidentität eine Verbindung zu Ihrem Amazon-Redshift-Cluster herstellen und über das mit diesem Befehl erstellte externe Schema auf die Tabellen zugreifen. Weitere Informationen finden Sie unter Verwenden einer Verbundidentität zur Verwaltung des Amazon-Redshift-Zugriffs auf lokale Ressourcen und externe Amazon-Redshift-Spectrum-Tabellen. Darin wird erläutert, wie Sie eine Verbundidentität konfigurieren. Beachten Sie, dass diese Konfiguration ('SESSION' anstelle des ARN zu verwenden) nur verwendet werden kann, wenn das Schema mit DATA CATALOG erstellt wurde.

Verwenden Sie den Amazon-Ressourcennamen (ARN) für eine IAM-Rolle, die von Ihrem Cluster für Authentifizierung und Autorisierung verwendet wird. Die IAM-Rolle muss mindestens die Berechtigung besitzen, eine LIST-Operation für den Amazon-S3-Bucket auszuführen, auf den zugegriffen werden soll, und eine GET-Operation für die Amazon-S3-Objekte, die der Bucket enthält.

Nachfolgend ist die Syntax für die IAM_ROLE-Parameterzeichenfolge für einen einzelnen ARN aufgeführt.

IAM_ROLE 'arn:aws:iam::<aws-account-id>:role/<role-name>'

Sie können Rollen miteinander verketten. Auf diese Weise kann der Cluster eine andere IAM-Rolle annehmen, die möglicherweise zu einem anderen Konto gehört. Es können bis zu 10 Rollen miteinander verkettet werden. Ein Beispiel für die Verkettung von Rollen finden Sie unter Verketten von IAM-Rollen in Amazon Redshift Spectrum.

Fügen Sie dieser IAM-Rolle eine IAM-Berechtigungsrichtlinie ähnlich der folgenden an:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AccessSecret", "Effect": "Allow", "Action": [ "secretsmanager:GetResourcePolicy", "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:ListSecretVersionIds" ], "Resource": "arn:aws:secretsmanager:us-west-2:123456789012:secret:my-rds-secret-VNenFy" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "secretsmanager:GetRandomPassword", "secretsmanager:ListSecrets" ], "Resource": "*" } ] }

Informationen zu den Schritten für das Erstellen einer IAM-Rolle zur Verwendung mit der Verbundabfrage finden Sie unter Erstellen eines Secrets und einer IAM-Rolle für die Verwendung von Verbundabfragen.

Anmerkung

Fügen Sie keine Leerzeichen in die Liste der verketteten Rollen ein.

Nachfolgend finden Sie die Syntax für die Verkettung von drei Rollen.

IAM_ROLE 'arn:aws:iam::<aws-account-id>:role/<role-1-name>,arn:aws:iam::<aws-account-id>:role/<role-2-name>,arn:aws:iam::<aws-account-id>:role/<role-3-name>'
SECRET_ARN '' ssm-secret-arn

Der Amazon-Ressourcenname (ARN) eines unterstützten PostgreSQL- oder MySQL-Datenbank-Engine-Geheimnisses, das mit erstellt wurde. AWS Secrets Manager Informationen zum Erstellen und Abrufen eines ARNs für ein Secret finden Sie unter Erstellen eines Basis-Secrets und unter Abrufen des Secret-Werts im AWS Secrets Manager -Benutzerhandbuch.

CATALOG_ROLE {'SITZUNG' |} catalog-role-arn-string

Verwenden Sie 'SESSION', um mithilfe einer Verbundidentität eine Verbindung mit Ihrem Amazon-Redshift-Cluster herzustellen, um den Datenkatalog zu authentifizieren und zu autorisieren. Weitere Informationen zur Durchführung der Schritte für eine Verbundidentität finden Sie unter Verwenden einer Verbundidentität zur Verwaltung des Amazon-Redshift-Zugriffs auf lokale Ressourcen und externe Amazon-Redshift-Spectrum-Tabellen. Beachten Sie, dass die 'SESSION'-Rolle nur verwendet werden kann, wenn das Schema in DATA CATALOG erstellt wurde.

Verwenden Sie den Amazon-Ressourcenname (ARN) für eine IAM-Rolle, die von Ihrem Cluster für Authentifizierung und Autorisierung für den Datenkatalog verwendet wird.

Wenn CATALOG_ROLE nicht angegeben wird, verwendet Amazon Redshift die angegebene IAM_ROLE. Die Katalogrolle muss über die Berechtigung verfügen, auf den Datenkatalog in AWS Glue oder Athena zuzugreifen. Weitere Informationen finden Sie unter IAM-Richtlinien für Amazon Redshift Spectrum.

Nachfolgend ist die Syntax für die CATALOG_ROLE-Parameterzeichenfolge für einen einzelnen ARN aufgeführt.

CATALOG_ROLE 'arn:aws:iam::<aws-account-id>:role/<catalog-role>'

Sie können Rollen miteinander verketten. Auf diese Weise kann der Cluster eine andere IAM-Rolle annehmen, die möglicherweise zu einem anderen Konto gehört. Es können bis zu 10 Rollen miteinander verkettet werden. Weitere Informationen finden Sie unter Verketten von IAM-Rollen in Amazon Redshift Spectrum.

Anmerkung

Die Liste der verketteten Rollen darf keine Leerstellen enthalten.

Nachfolgend finden Sie die Syntax für die Verkettung von drei Rollen.

CATALOG_ROLE 'arn:aws:iam::<aws-account-id>:role/<catalog-role-1-name>,arn:aws:iam::<aws-account-id>:role/<catalog-role-2-name>,arn:aws:iam::<aws-account-id>:role/<catalog-role-3-name>'

CREATE EXTERNAL DATABASE IF NOT EXISTS

Eine Klausel, die eine externe Datenbank mit dem Namen erstellt, der im DATABASE-Argument angegeben ist, wenn die angegebene externe Datenbank nicht vorhanden ist. Wenn die angegebene externe Datenbank vorhanden ist, führt der Befehl keine Änderungen aus. In diesem Fall gibt der Befehl die Meldung zurück, dass die externe Datenbank vorhanden ist, statt mit einem Fehler beendet zu werden.

Anmerkung

CREATE EXTERNAL DATABASE IF NOT EXISTS kann nicht mit HIVE METASTORE verwendet werden.

Um CREATE EXTERNAL DATABASE IF NOT EXISTS mit einem für AWS Lake Formation aktivierten Datenkatalog zu verwenden, benötigen Sie die Berechtigung CREATE_DATABASE für den Datenkatalog.

CATALOG_ID ‚Amazon-Web-Services-Konto-ID mit Glue- oder Lake-Formation-Datenbank'

Die Konto-ID, in der die Datenkatalogdatenbank gespeichert ist.

CATALOG_ID kann nur angegeben werden, wenn Sie planen, für die Authentifizierung und Autorisierung beim Datenkatalog mithilfe einer Verbundidentität eine Verbindung mit Ihrem Amazon-Redshift-Cluster oder Amazon Redshift Serverless herzustellen, indem Sie eine der folgenden Einstellungen festlegen:

  • CATALOG_ROLE auf 'SESSION'

  • IAM_ROLE auf 'SESSION' und 'CATALOG_ROLE' auf die Standardeinstellung festgelegt

Weitere Informationen zur Durchführung der Schritte für Verbundidentität finden Sie unter Verwenden einer Verbundidentität zur Verwaltung des Amazon-Redshift-Zugriffs auf lokale Ressourcen und externe Amazon-Redshift-Spectrum-Tabellen

AUTHENTICATION

Der für die Streaming-Erfassung definierte Authentifizierungstyp. Die Streaming-Erfassung mit Authentifizierungstypen kann mit Amazon Managed Streaming for Apache Kafka verwendet werden. Es stehen folgende AUTHENTICATION-Typen zur Verfügung:

CLUSTER_ARN

Für die Streaming-Erfassung die Cluster-ID für den Cluster von Amazon Managed Streaming for Apache Kafka, von dem aus Sie streamen. Weitere Informationen finden Sie unter Streaming-Erfassung.

Nutzungshinweise

Informationen über Beschränkungen bei der Verwendung des Athena-Datenkatalogs finden Sie unter Athena-Limits in der Allgemeine AWS-Referenz.

Informationen zu den Beschränkungen bei der AWS Glue Data Catalog Verwendung von finden Sie unter AWS Glue Grenzwerte in der Allgemeine AWS-Referenz.

Diese Begrenzungen gelten nicht für einen Hive-Metastore.

Pro Datenbank sind höchstens 9 900 Schemata zulässig. Weitere Informationen finden Sie unter Kontingente und Einschränkungen im Amazon-Redshift-Verwaltungshandbuch.

Verwenden Sie den DROP SCHEMA-Befehl, um die Registrierung des Schemas aufzuheben.

Um sich die Details zu externen Schemata anzeigen zu lassen, fragen Sie die folgenden Systemansichten ab:

Beispiele

Im folgenden Beispiel wird ein externes Schema unter Verwendung einer Datenbank in einem Athena-Datenkatalog namens sampledb in der Region USA West (Oregon) erstellt. Verwenden Sie dieses Beispiel mit einem Athena- oder AWS Glue Datenkatalog.

create external schema spectrum_schema from data catalog database 'sampledb' region 'us-west-2' iam_role 'arn:aws:iam::123456789012:role/MySpectrumRole';

Im folgenden Beispiel werden ein externes Schema und eine neue externe Datenbank namens erstellt spectrum_db.

create external schema spectrum_schema from data catalog database 'spectrum_db' iam_role 'arn:aws:iam::123456789012:role/MySpectrumRole' create external database if not exists;

Im folgenden Beispiel wird ein externes Schema mittels einer Hive-Metastore-Datenbank namens erstellt hive_db.

create external schema hive_schema from hive metastore database 'hive_db' uri '172.10.10.10' port 99 iam_role 'arn:aws:iam::123456789012:role/MySpectrumRole';

Im folgenden Beispiel miteinander verketteter Rollen wird die Rolle myS3Role für den Zugriff auf Amazon S3 und myAthenaRole für den Datenkatalogzugriff verwendet. Weitere Informationen finden Sie unter Verketten von IAM-Rollen in Amazon Redshift Spectrum.

create external schema spectrum_schema from data catalog database 'spectrum_db' iam_role 'arn:aws:iam::123456789012:role/myRedshiftRole,arn:aws:iam::123456789012:role/myS3Role' catalog_role 'arn:aws:iam::123456789012:role/myAthenaRole' create external database if not exists;

Im folgenden Beispiel wird ein externes Schema erstellt, das auf eine Aurora-PostgreSQL-Datenbank verweist.

CREATE EXTERNAL SCHEMA [IF NOT EXISTS] myRedshiftSchema FROM POSTGRES DATABASE 'my_aurora_db' SCHEMA 'my_aurora_schema' URI 'endpoint to aurora hostname' PORT 5432 IAM_ROLE 'arn:aws:iam::123456789012:role/MyAuroraRole' SECRET_ARN 'arn:aws:secretsmanager:us-east-2:123456789012:secret:development/MyTestDatabase-AbCdEf'

Im folgenden Beispiel wird ein externes Schema erstellt, das auf die im Konsumenten-Cluster importierte sales_db verweist.

CREATE EXTERNAL SCHEMA sales_schema FROM REDSHIFT DATABASE 'sales_db' SCHEMA 'public';

Im folgenden Beispiel wird ein externes Schema erstellt, das auf eine Aurora-MySQL-Datenbank verweist.

CREATE EXTERNAL SCHEMA [IF NOT EXISTS] myRedshiftSchema FROM MYSQL DATABASE 'my_aurora_db' URI 'endpoint to aurora hostname' IAM_ROLE 'arn:aws:iam::123456789012:role/MyAuroraRole' SECRET_ARN 'arn:aws:secretsmanager:us-east-2:123456789012:secret:development/MyTestDatabase-AbCdEf'