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. Sie können auch angeben, dass UNLOAD die Ergebnisse sequenziell in eine oder mehrere Dateien schreibt, indem Sie die Option PARALLEL OFF wählen. Sie können die Größe der Dateien in Amazon S3 durch Angabe des Parameters MAXIFILESIZE begrenzen. UNLOAD verschlüsselt Datendateien automatisch mit der serverseitigen Amazon-S3-Verschlüsselung (SSE-S3).
Sie können jede SELECT-Anweisung in dem UNLOAD-Befehl verwenden, die Amazon Redshift unterstützt, mit Ausnahme von SELECT-Anweisungen mit einer LIMIT-Klausel in der äußeren Auswahl. 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.
Beispielsweise sendet der folgende UNLOAD-Befehl die Inhalte der Tabelle VENUE an den Amazon-S3-Bucket s3://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
Standardmäßig schreibt UNLOAD die Daten parallel in mehrere Dateien, je nach der Anzahl der Slices in dem Cluster. Um Daten in eine einzelne Datei zu schreiben, geben Sie PARALLEL OFF an. UNLOAD schreibt die Daten seriell, absolut nach der ORDER BY-Klausel sortiert, falls eine solche verwendet wird. Die maximale Größe für eine Datendatei ist 6,2 GB. Wenn der Umfang der Daten die maximale Dateigröße von 6,2 GB überschreitet, erstellt UNLOAD zusätzliche Dateien, jeweils bis zu 6,2 GB.
Das folgende Beispiel schreibt die Inhalte von VENUE in eine einzelne Datei. 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 zur Verwendung der parallelen Verarbeitung gedacht. Wir empfehlen, in den meisten Fällen PARALLEL aktiviert zu lassen, besonders, wenn die Dateien zum Laden von Tabellen mit einem COPY-Befehl verwendet werden sollen.
Unter der Annahme eines Gesamtdatenvolumens für VENUE von 5 GB schreibt das folgende Beispiel den Inhalt von VENUE in 50 Dateien mit 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-Pfad-Zeichenfolge einschließen, verwendet UNLOAD dieses Präfix für die Dateinamen.
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 Option MANIFEST in dem UNLOAD-Befehl angeben. Das Manifest ist eine Textdatei im JSON-Format, die explizit die URL jeder einzelnen Datei auflistet, die zu Amazon S3 geschrieben wurde.
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 mit COPY und der Option MANIFEST zum Laden derselben Dateien verwendet werden. Weitere Informationen finden Sie unter Verwenden eines Manifests für die Angabe von Datendateien.
Stellen Sie nach Abschluss einer UNLOAD-Operation sicher, dass die Daten korrekt entladen wurden, indem Sie zu dem Amazon-S3-Bucket navigieren, in dem UNLOAD die Dateien geschrieben hat. Sie sehen dort eine oder mehrere nummerierte Dateien pro Slice, beginnend mit der Nummer 0. Wenn Sie die MANIFEST-Option angegeben haben, sehen Sie auch eine Datei, die mit „“ endet. 'manifest
'. Beispiel:
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 eine Liste der in Amazon S3 geschriebenen Dateien programmgesteuert erhalten, indem Sie nach Abschluss des UNLOAD-Vorgangs eine Amazon-S3-Listenoperation aufrufen. Sie können auch STL_UNLOAD_LOG abfragen.
Die folgende Abfrage gibt den Pfadnamen für Dateien aus, die durch einen UNLOAD-Befehl erstellt wurden. Die Funktion PG_LAST_QUERY_ID 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. Beispiel:
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 enthält eine Zeichenfolge in Anführungszeichen in der SELECT-Anweisung, für die Anführungszeichen wird daher ein Escape-Zeichen () verwendet. (=\'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';
Standardmäßig schlägt UNLOAD fehl, anstatt vorhandene Dateien zu überschreiben, die im Ziel-Bucket vorhanden sind. Um die vorhandenen Dateien, einschließlich der Manifestdatei, zu überschreiben, geben Sie die Option ALLOWOVERWRITE an.
unload ('select * from venue') to 's3://amzn-s3-demo-bucket/venue_pipe_' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' manifest allowoverwrite;