

 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 in Amazon Redshift
<a name="c_unloading_data"></a>

Um Daten aus Datentabellen zu entfernen und in einen Dateiensatz in einem Amazon-S3-Bucket zu übertragen, können Sie den Befehl [UNLOAD](r_UNLOAD.md) mit einer SELECT-Anweisung verwenden. Sie können Textdaten in einem abgeteilten Format oder in einem Format mit fester Breite entladen, unabhängig von dem Datenformat, das zum laden verwendet wurde. Sie können auch angeben, ob komprimierte GZIP-Dateien erstellt werden sollen.

Sie können den Zugriff Ihrer Benutzer auf Ihren Amazon-S3-Bucket mithilfe temporärer Sicherheitsanmeldedaten beschränken.

**Topics**
+ [Entladen von Daten aus Amazon S3](t_Unloading_tables.md)
+ [Entladen verschlüsselter Datendateien](t_unloading_encrypted_files.md)
+ [Entladen von Daten im getrennten Format oder im Format mit fester Breite](t_unloading_fixed_width_data.md)
+ [Erneutes Laden entladener Daten](t_Reloading_unload_files.md)

# 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;
```

# Entladen verschlüsselter Datendateien
<a name="t_unloading_encrypted_files"></a>

UNLOAD erstellt die Dateien automatisch mit der serverseitigen Amazon-S3-Verschlüsselung und AWS -verwalteten Verschlüsselungsschlüsseln (SSE-S3). Sie können auch serverseitige Verschlüsselung mit einem AWS Key Management Service Schlüssel (SSE-KMS) oder clientseitige Verschlüsselung mit einem vom Kunden verwalteten Schlüssel angeben. UNLOAD unterstützt keine serverseitige Amazon-S3-Verschlüsselung mit von Kunden bereitgestellten Schlüsseln (SSE-C). Weitere Informationen finden Sie unter [Schützen von Daten mithilfe serverseitiger Verschlüsselung](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html). 

Um mithilfe einer serverseitigen Verschlüsselung mit einem AWS KMS Schlüssel nach Amazon S3 zu entladen, verwenden Sie den Parameter KMS\$1KEY\$1ID, um die Schlüssel-ID anzugeben, wie im folgenden Beispiel gezeigt.

```
unload ('select venuename, venuecity from venue')
to 's3://amzn-s3-demo-bucket/encrypted/venue_' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
KMS_KEY_ID '1234abcd-12ab-34cd-56ef-1234567890ab'
encrypted;
```

Wenn Sie Ihren eigenen Verschlüsselungsschlüssel bereitstellen möchten, können Sie clientseitig verschlüsselte Datendateien in Amazon S3 erstellen, indem Sie den UNLOAD-Befehl mit der Option ENCRYPTED verwenden. UNLOAD verwendet denselben Verschlüsselungsprozess wie die clientseitige Amazon-S3-Verschlüsselung. Anschließend können Sie den COPY-Befehl mit der Option ENCRYPTED verwenden, um die verschlüsselten Dateien zu laden.

Der Prozess funktioniert wie folgt:

1. Sie erstellen einen base64-kodierten 256-Bit-AES-Schlüssel, den Sie als Ihren privaten Verschlüsselungsschlüssel bzw. *symmetrischen Root-Schlüssel* verwenden. 

1. Sie geben einen UNLOAD-Befehl aus, der Ihren symmetrischen Root-Schlüssel und die Option ENCRYPTED enthält. 

1. UNLOAD generiert einen one-time-use symmetrischen Schlüssel (den sogenannten symmetrischen *Envelope-Schlüssel*) und einen Initialisierungsvektor (IV), mit denen Ihre Daten verschlüsselt werden. 

1. UNLOAD verschlüsselt den Envelope Symmetric Key unter Verwendung Ihres symmetrischen Root-Schlüssels. 

1. Dann speichert UNLOAD die verschlüsselten Datendateien in Amazon S3 und den verschlüsselten Envelope Key und IV als Objektmetadaten mit jeder Datei. Der verschlüsselte Envelope Key wird als Objektmetadaten `x-amz-meta-x-amz-key` und der IV als Objektmetadaten `x-amz-meta-x-amz-iv` gespeichert. 

Weitere Informationen zum Envelope-Verschlüsselungsprozess finden Sie im [Artikel Client-seitige Datenverschlüsselung mit dem AWS SDK for Java und Amazon S3](https://aws.amazon.com/articles/2850096021478074). 

Fügen Sie zum Entladen verschlüsselter Datendateien den Root-Schlüssel-Wert der Anmeldedatenzeichenfolge hinzu und verwenden Sie die Option ENCRYPTED. Wenn Sie die MANIFEST-Option verwenden, wird die Manifestdatei ebenfalls verschlüsselt.

```
unload ('select venuename, venuecity from venue')
to 's3://amzn-s3-demo-bucket/encrypted/venue_' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
master_symmetric_key '<root_key>' 
manifest
encrypted;
```

Um verschlüsselte Datendateien mit GZIP-Komprimierung zu entladen, verwenden Sie die Option GZIP zusammen mit dem Root-Schlüssel-Wert und der Option ENCRYPTED.

```
unload ('select venuename, venuecity from venue')
to 's3://amzn-s3-demo-bucket/encrypted/venue_' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
master_symmetric_key '<root_key>' 
encrypted gzip;
```

Um die verschlüsselten Datendateien zu laden, fügen Sie den Parameter MASTER\$1SYMMETRIC\$1KEY mit dem gleichen Root-Schlüssel-Wert hinzu und verwenden die Option ENCRYPTED. 

```
copy venue from 's3://amzn-s3-demo-bucket/encrypted/venue_' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
master_symmetric_key '<root_key>' 
encrypted;
```

# Entladen von Daten im getrennten Format oder im Format mit fester Breite
<a name="t_unloading_fixed_width_data"></a>

Sie können Daten im getrennten Format oder im Format mit fester Breite entladen. Die Standardausgabe ist im mit dem Zeichen „\$1“ getrennten Format.

Das folgende Beispiel verwendet ein Komma als Trennzeichen: 

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

Die Ausgabe sieht wie folgt aus: 

```
20,Air Canada Centre,Toronto,ON,0
60,Rexall Place,Edmonton,AB,0
100,U.S. Cellular Field,Chicago,IL,40615
200,Al Hirschfeld Theatre,New York City,NY,0
240,San Jose Repertory Theatre,San Jose,CA,0
300,Kennedy Center Opera House,Washington,DC,0
...
```

Geben Sie den folgenden Befehl aus, um den gleichen Ergebnissatz in eine tabulatorgetrennte Datei auszugeben: 

```
unload ('select * from venue') 
to 's3://amzn-s3-demo-bucket/tickit/venue/tab' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
delimiter as '\t';
```

Sie können auch die Angabe FIXEDWIDTH verwenden. Diese besteht aus einer Kennung für jede Tabellenspalte sowie der Breite der Spalte (Anzahl von Zeichen). Der UNLOAD-Befehl schlägt fehl, und kürzt die Daten nicht, geben Sie daher eine Breite an, die mindestens der des längsten Eintrags in der Spalte entspricht. Die Verwendung von Daten mit fester Breite funktioniert ähnlich wie bei getrennten Daten, mit der Ausnahme dass die Ausgabe keine Trennzeichen enthält. Beispiel: 

```
unload ('select * from venue')
to 's3://amzn-s3-demo-bucket/tickit/venue/fw' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
fixedwidth '0:3,1:100,2:30,3:2,4:6';
```

Die Ausgabe mit fester Breite sieht etwa so aus: 

```
20 Air Canada Centre         Toronto      ON0
60 Rexall Place              Edmonton     AB0
100U.S. Cellular Field       Chicago      IL40615
200Al Hirschfeld Theatre     New York CityNY0
240San Jose Repertory TheatreSan Jose     CA0
300Kennedy Center Opera HouseWashington   DC0
```

Für weitere Einzelheiten zur FIXEDWIDTH-Angabe vgl. den Befehl [UNLOAD](r_UNLOAD.md).

# Erneutes Laden entladener Daten
<a name="t_Reloading_unload_files"></a>

Zum erneuten Laden der Ergebnisse einer Entladeoperation können Sie den COPY-Befehl verwenden.

Das folgende Beispiel zeigt einen einzelnen Fall, in dem die Tabelle VENUE mit einer Manifestdatei entladen, gekürzt und erneut geladen wird. 

```
unload  ('select * from venue order by venueid')
to 's3://amzn-s3-demo-bucket/tickit/venue/reload_' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' 
manifest 
delimiter '|';

truncate venue;

copy venue 
from 's3://amzn-s3-demo-bucket/tickit/venue/reload_manifest' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
manifest 
delimiter '|';
```

nach dem erneuten Laden sieht die Tabelle VENUE wie folgt aus: 

```
select * from venue order by venueid limit 5;

 venueid |         venuename         |  venuecity  | venuestate | venueseats
---------+---------------------------+-------------+------------+-----------
       1 | Toyota Park               | Bridgeview  | IL         |          0
       2 | Columbus Crew Stadium     | Columbus    | OH         |          0
       3 | RFK Stadium               | Washington  | DC         |          0
       4 | CommunityAmerica Ballpark | Kansas City | KS         |          0
       5 | Gillette Stadium          | Foxborough  | MA         |      68756
(5 rows)
```