Entladen von Daten 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.

Entladen von Daten aus Amazon S3

Amazon Redshift teilt die Ergebnisse einer SELECT-Anweisung auf einen Satz von Dateien auf (jeweils eine oder mehrere Dateien pro Knoten-Slice), um das parallele erneute Laden der Daten zu vereinfachen. Alternativ können Sie angeben, dass die Ergebnisse seriell in eine oder mehrere Dateien geschrieben werden UNLOAD sollen, indem Sie die PARALLEL OFF Option hinzufügen. Sie können die Größe der Dateien in Amazon S3 einschränken, indem Sie den MAXFILESIZE Parameter angeben. UNLOADverschlüsselt Datendateien automatisch mithilfe der serverseitigen Amazon S3 S3-Verschlüsselung (SSE-S3).

Sie können jede Select-Anweisung in dem UNLOAD Befehl verwenden, den Amazon Redshift unterstützt, mit Ausnahme einer Select-Anweisung, die eine LIMIT Klausel in der äußeren Auswahl verwendet. So können Sie beispielsweise eine SELECT-Anweisung verwenden, die bestimmte Spalten einschließt, oder eine, die eine WHERE-Klausel verwendet, um mehrere Tabellen zu verbinden. Wenn Ihre Abfrage Anführungszeichen (beispielsweise für Literalwerte) oder umgekehrte Schrägstriche (\) enthält, müssen Sie für diese im Abfragetext Escape-Zeichen verwenden (\'). Weitere Informationen finden Sie in der SELECT-Befehlsreferenz. Weitere Informationen zur Verwendung einer LIMIT Klausel finden Sie unter Nutzungshinweise für den UNLOAD Befehl.

Mit dem folgenden UNLOAD Befehl wird beispielsweise der Inhalt der VENUE Tabelle an den Amazon S3 S3-Bucket gesendets3://amzn-s3-demo-bucket/tickit/unload/.

unload ('select * from venue') to 's3://amzn-s3-demo-bucket/tickit/unload/venue_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Die vom vorherigen Beispiel erstellten Dateinamen enthalten das Präfix „֧“. 'venue_'.

venue_0000_part_00 venue_0001_part_00 venue_0002_part_00 venue_0003_part_00

UNLOADSchreibt standardmäßig Daten parallel in mehrere Dateien, je nach Anzahl der Bereiche im Cluster. Um Daten in eine einzelne Datei zu schreiben, geben Sie an PARALLELOFF. UNLOADschreibt die Daten seriell, absolut sortiert nach der ORDER BY-Klausel, falls eine verwendet wird. Die maximale Größe für eine Datendatei ist 6,2 GB. Wenn die Datengröße größer als das Maximum ist, werden zusätzliche Dateien mit jeweils bis zu 6,2 GB UNLOAD erstellt.

Im folgenden Beispiel wird der Inhalt VENUE in eine einzelne Datei geschrieben. Es ist nur eine Datei erforderlich, da die Dateigröße unter 6,2 GB liegt.

unload ('select * from venue') to 's3://amzn-s3-demo-bucket/tickit/unload/venue_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' parallel off;
Anmerkung

Der UNLOAD Befehl ist für die Parallelverarbeitung konzipiert. In den meisten Fällen empfehlen wir, die PARALLEL Option aktiviert zu lassen, insbesondere, wenn die Dateien zum Laden von Tabellen mithilfe eines COPY Befehls verwendet werden sollen.

Unter der Annahme, dass die Gesamtdatengröße für 5 GB VENUE beträgt, schreibt das folgende Beispiel den Inhalt von VENUE 50 Dateien mit einer Größe von jeweils 100 MB.

unload ('select * from venue') to 's3://amzn-s3-demo-bucket/tickit/unload/venue_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' parallel off maxfilesize 100 mb;

Wenn Sie ein Präfix in die Amazon S3 S3-Pfadzeichenfolge aufnehmen, UNLOAD wird dieses Präfix für die Dateinamen verwendet.

unload ('select * from venue') to 's3://amzn-s3-demo-bucket/tickit/unload/venue_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Sie können eine Manifestdatei erstellen, die die Entladedateien auflistet, indem Sie die MANIFEST Option im UNLOAD Befehl angeben. Das Manifest ist eine Textdatei in einem JSON Format, das explizit alle Dateien auflistet, die in Amazon S3 geschrieben wurden. URL

Das folgende Beispiel enthält die MANIFEST-Option.

unload ('select * from venue') to 's3://amzn-s3-demo-bucket/tickit/venue_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' manifest;

Das folgende Beispiel zeigt ein Manifest für vier Entladedateien.

{ "entries": [ {"url":"s3://amzn-s3-demo-bucket/tickit/venue_0000_part_00"}, {"url":"s3://amzn-s3-demo-bucket/tickit/venue_0001_part_00"}, {"url":"s3://amzn-s3-demo-bucket/tickit/venue_0002_part_00"}, {"url":"s3://amzn-s3-demo-bucket/tickit/venue_0003_part_00"} ] }

Die Manifestdatei kann verwendet werden, um dieselben Dateien zu laden, indem Sie a COPY mit der MANIFEST Option verwenden. Weitere Informationen finden Sie unter Verwenden eines Manifests für die Angabe von Datendateien.

Nachdem Sie einen UNLOAD Vorgang abgeschlossen haben, überprüfen Sie, ob die Daten korrekt entladen wurden, indem Sie zu dem Amazon S3 S3-Bucket navigieren, in den die Dateien UNLOAD geschrieben wurden. Sie sehen dort eine oder mehrere nummerierte Dateien pro Slice, beginnend mit der Nummer 0. Wenn Sie die MANIFEST Option angegeben haben, wird Ihnen auch eine Datei angezeigt, die mit '' manifest endet. Beispielsweise:

amzn-s3-demo-bucket/tickit/venue_0000_part_00 amzn-s3-demo-bucket/tickit/venue_0001_part_00 amzn-s3-demo-bucket/tickit/venue_0002_part_00 amzn-s3-demo-bucket/tickit/venue_0003_part_00 amzn-s3-demo-bucket/tickit/venue_manifest

Sie können programmgesteuert eine Liste der Dateien abrufen, die in Amazon S3 geschrieben wurden, indem Sie nach Abschluss des Vorgangs eine Amazon S3 S3-Listenoperation aufrufen. UNLOAD Sie können auch STL _ _ UNLOAD abfragen. LOG

Die folgende Abfrage gibt den Pfadnamen für Dateien zurück, die von einem UNLOAD erstellt wurden. Die Funktion PG_ LAST _ _ID QUERY gibt die jüngste Abfrage zurück.

select query, substring(path,0,40) as path from stl_unload_log where query=2320 order by path; query | path -------+-------------------------------------- 2320 | s3://amzn-s3-demo-bucket/venue0000_part_00 2320 | s3://amzn-s3-demo-bucket/venue0001_part_00 2320 | s3://amzn-s3-demo-bucket/venue0002_part_00 2320 | s3://amzn-s3-demo-bucket/venue0003_part_00 (4 rows)

Wenn der Umfang der Daten sehr groß ist, kann Amazon Redshift die Dateien in mehrere Teile pro Slice trennen. Beispielsweise:

venue_0000_part_00 venue_0000_part_01 venue_0000_part_02 venue_0001_part_00 venue_0001_part_01 venue_0001_part_02 ...

Der folgende UNLOAD Befehl schließt eine Zeichenfolge in Anführungszeichen in die SELECT-Anweisung ein, sodass die Anführungszeichen maskiert werden (=\'OH\' ').

unload ('select venuename, venuecity from venue where venuestate=\'OH\' ') to 's3://amzn-s3-demo-bucket/tickit/venue/ ' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Schlägt standardmäßig UNLOAD fehl, anstatt vorhandene Dateien im Ziel-Bucket zu überschreiben. Um die vorhandenen Dateien, einschließlich der Manifestdatei, zu überschreiben, geben Sie die ALLOWOVERWRITE Option an.

unload ('select * from venue') to 's3://amzn-s3-demo-bucket/venue_pipe_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' manifest allowoverwrite;