Verwenden des COPY-Befehls zum Laden aus Amazon S3 - 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.

Verwenden des COPY-Befehls zum Laden aus Amazon S3

Verwenden Sie den COPY-Befehl, um eine Tabelle parallel aus Datendateien in Amazon S3 zu laden. Sie können die Dateien, die geladen werden sollen, durch Verwendung eines Amazon-S3-Objektpräfixes oder einer Manifestdatei angeben.

Die Syntax für die Angabe der Dateien, die unter Verwendung eines Präfixes geladen werden sollen, ist wie folgt:

copy <table_name> from 's3://<bucket_name>/<object_prefix>' authorization;

Die Manifestdatei ist eine Datei im JSON-Format, die die Datendateien auflistet, die geladen werden sollen. Die Syntax für die Angabe der Dateien, die unter Verwendung einer Manifestdatei geladen werden sollen, ist wie folgt:

copy <table_name> from 's3://<bucket_name>/<manifest_file>' authorization manifest;

Die Tabelle, die geladen werden soll, muss in der Datenbank bereits vorhanden sein. Informationen zum Erstellen einer Tabelle finden Sie unter CREATE TABLE in der SQL-Referenz.

Die Werte für die Autorisierung stellen die AWS Autorisierung bereit, die Ihr Cluster für den Zugriff auf die Amazon S3-Objekte benötigt. Weitere Informationen zu den erforderlichen Berechtigungen finden Sie unter IAM-Berechtigungen für COPY, UNLOAD und CREATE LIBRARY. Die bevorzugte Methode für die Authentifizierung besteht in der Angabe des Parameters IAM_ROLE und des Amazon-Ressourcennamens (ARN) für eine IAM-Rolle mit den notwendigen Berechtigungen. Weitere Informationen finden Sie unter Rollenbasierte Zugriffskontrolle .

Um sich mit dem Parameter IAM_ROLE zu authentifizieren, ersetzen Sie <aws-account-id> und <role-name>, wie in der folgenden Syntax gezeigt.

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

Das folgende Beispiel zeigt die Authentifizierung unter Verwendung einer IAM-Rolle.

copy customer from 's3://mybucket/mydata' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Weitere Informationen zu anderen Autorisierungsoptionen finden Sie unter . Autorisierungsparameter

Wenn Sie Ihre Daten validieren möchten, ohne die Tabelle tatsächlich zu laden, verwenden Sie die Option NOLOAD mit dem Befehl COPY.

Das folgende Beispiel zeigt die ersten wenigen Zeilen mit durch Pipe-Zeichen getrennten Daten in einer Datei namens venue.txt.

1|Toyota Park|Bridgeview|IL|0 2|Columbus Crew Stadium|Columbus|OH|0 3|RFK Stadium|Washington|DC|0

Bevor Sie die Datei zu Amazon S3 hochladen, teilen Sie die Datei in mehrere Dateien auf, sodass der Befehl COPY diese unter Verwendung der Parallelverarbeitung hochladen kann. Die Anzahl der Dateien sollte ein Vielfaches der Anzahl der Slices in Ihrem Cluster sein. Teilen Sie Ihre Ladedatendateien, so dass die Dateien etwa gleich groß sind, zwischen 1 MB und 1 GB nach der Kompression. Weitere Informationen finden Sie unter Laden von Daten aus komprimierten und unkomprimierten Dateien.

Beispielsweise kann die Datei venue.txt wie folgt in vier Dateien aufgeteilt werden:

venue.txt.1 venue.txt.2 venue.txt.3 venue.txt.4

Der folgende COPY-Befehl lädt die Tabelle VENUE mittels der durch Pipe-Zeichen getrennten Daten in den Datendateien mit dem Präfix „venue“ im Amazon-S3-Bucket mybucket.

Anmerkung

Der Amazon-S3-Bucket mybucket in den folgenden Beispiele ist nicht vorhanden. Beispiele für COPY-Befehle, die echte Daten in einem vorhandenen Amazon-S3-Bucket verwenden, finden Sie unter Load sample data (Beispieldateien laden).

copy venue from 's3://mybucket/venue' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' delimiter '|';

Wenn keine Amazon-S3-Objekte mit dem Schlüsselpräfix „venue“ vorhanden sind, schlägt der Ladevorgang fehl.