

 Amazon Redshift unterstützt UDFs ab Patch 198 nicht mehr die Erstellung von neuem Python. Das bestehende Python UDFs wird bis zum 30. Juni 2026 weiterhin funktionieren. Weitere Informationen finden Sie im [Blog-Posting](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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
<a name="t_Unloading_tables"></a>

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](r_UNLOAD.md) 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 (\$1) enthält, müssen Sie für diese im Abfragetext Escape-Zeichen verwenden (\$1'). Weitere Informationen finden Sie in der [SELECT](r_SELECT_synopsis.md)-Befehlsreferenz. Weitere Informationen zur Verwendung einer LIMIT-Klausel finden Sie unter [Nutzungshinweise](r_UNLOAD.md#unload-usage-notes) 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](loading-data-files-using-manifest.md).

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\$1UNLOAD\$1LOG abfragen.

Die folgende Abfrage gibt den Pfadnamen für Dateien aus, die durch einen UNLOAD-Befehl erstellt wurden. Die Funktion [PG\$1LAST\$1QUERY\$1ID](PG_LAST_QUERY_ID.md) 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;
```