

 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.

# Nutzungshinweise
<a name="r_COPY_usage_notes"></a>

**Topics**
+ [Berechtigungen AWS für den Zugriff auf andere Ressourcen](copy-usage_notes-access-permissions.md)
+ [Verwenden von COPY mit Amazon-S3-Zugriffspunkt-Aliasen](copy-usage_notes-s3-access-point-alias.md)
+ [Laden von Multibyte-Daten aus Amazon S3](copy-usage_notes-multi-byte.md)
+ [Laden einer Spalte des Datentyps GEOMETRY oder GEOGRAPHY](copy-usage_notes-spatial-data.md)
+ [Laden des Datentyps HLLSKETCH](copy-usage_notes-hll.md)
+ [Laden einer Spalte des Datentyps VARBYTE](copy-usage-varbyte.md)
+ [Fehler beim Lesen mehrerer Dateien](copy-usage_notes-multiple-files.md)
+ [COPY von JSON-Format](copy-usage_notes-copy-from-json.md)
+ [COPY aus spaltenbasierten Datenformaten](copy-usage_notes-copy-from-columnar.md)
+ [DATEFORMAT- und TIMEFORMAT-Zeichenfolgen](r_DATEFORMAT_and_TIMEFORMAT_strings.md)
+ [Verwenden der automatischen Erkennung bei DATEFORMAT und TIMEFORMAT](automatic-recognition.md)

# Berechtigungen AWS für den Zugriff auf andere Ressourcen
<a name="copy-usage_notes-access-permissions"></a>

 Um Daten zwischen Ihrem Cluster und einer anderen AWS Ressource wie Amazon S3, Amazon DynamoDB, Amazon EMR oder Amazon EC2 zu verschieben, muss Ihr Cluster über die Berechtigung verfügen, auf die Ressource zuzugreifen und die erforderlichen Aktionen auszuführen. Um beispielsweise Daten aus Amazon S3 zu laden, muss COPY über LIST-Zugriff auf den Bucket und GET-Zugriff auf die Bucket-Objekte verfügen. Weitere Informationen zu den mindestens erforderlichen Berechtigungen finden Sie unter [IAM-Berechtigungen für COPY, UNLOAD und CREATE LIBRARY](#copy-usage_notes-iam-permissions).

Um die Autorisierung für den Zugriff auf die Ressource zu erhalten, muss Ihr Cluster authentifiziert werden. Sie können eine der beiden folgenden Authentifizierungsmethoden verwenden: 
+ [Rollenbasierte Zugriffskontrolle](#copy-usage_notes-access-role-based)— Für die rollenbasierte Zugriffskontrolle geben Sie eine AWS Identity and Access Management (IAM-) Rolle an, die Ihr Cluster für die Authentifizierung und Autorisierung verwendet. Um Ihre AWS Anmeldeinformationen und vertraulichen Daten zu schützen, empfehlen wir dringend, die rollenbasierte Authentifizierung zu verwenden.
+ [Schlüsselbasierte Zugriffssteuerung](#copy-usage_notes-access-key-based)— Für die schlüsselbasierte Zugriffskontrolle geben Sie die Zugangsdaten ( AWS Zugriffsschlüssel-ID und geheimer Zugriffsschlüssel) für einen Benutzer als Klartext an.

## Rollenbasierte Zugriffskontrolle
<a name="copy-usage_notes-access-role-based"></a>

Mit einer <a name="copy-usage_notes-access-role-based.phrase"></a>rollenbasierten Zugriffssteuerung übernimmt Ihr Cluster vorübergehend in Ihrem Namen eine IAM-Rolle. Anschließend kann Ihr Cluster auf der Basis der Autorisierungen, die der Rolle gewährt wurden, auf die erforderlichen AWS -Ressourcen zugreifen.

Das Erstellen einer IAM-*Rolle* ähnelt insofern dem Erteilen von Berechtigungen für einen Benutzer, als es sich um eine AWS -Identität mit Berechtigungsrichtlinien handelt, die festlegen, welche Aktionen die Identität in AWS ausführen kann und welche nicht. Eine Rolle ist jedoch nicht einem einzigen Benutzer zugeordnet, sondern kann von allen Entitäten angenommen werden, die diese Rolle benötigen. Einer Rolle sind auch keine Anmeldeinformationen (Passwort oder Zugriffsschlüssel) zugeordnet. Wenn eine Rolle mit einem Cluster verknüpft ist, werden die Zugriffsschlüssel stattdessen dynamisch erstellt und dem Cluster bereitgestellt.

Wir empfehlen die Verwendung einer rollenbasierten Zugriffskontrolle, da sie zusätzlich zum Schutz Ihrer Anmeldeinformationen eine sicherere und detailliertere Steuerung des Zugriffs auf AWS Ressourcen und vertrauliche Benutzerdaten ermöglicht. AWS 

Die rollenbasierte Authentifizierung bietet folgende Vorteile:
+ Sie können AWS Standard-IAM-Tools verwenden, um eine IAM-Rolle zu definieren und die Rolle mehreren Clustern zuzuordnen. Wenn Sie die Zugriffsrichtlinie für eine Rolle ändern, werden die Änderungen automatisch auf alle Cluster angewendet, die diese Rolle verwenden.
+ Sie können detaillierte IAM-Richtlinien definieren, die bestimmten Clustern und Datenbankbenutzern Berechtigungen für den Zugriff auf bestimmte Ressourcen und Aktionen gewähren. AWS 
+ Ihr Cluster erhält temporäre Sitzungsanmeldeinformationen zur Laufzeit. Die Anmeldeinformationen werden wie benötigt aktualisiert, bis die Operation abgeschlossen ist. Wenn Sie schlüsselbasierte temporäre Anmeldeinformationen verwenden, schlägt die Operation fehl, wenn die temporären Anmeldeinformationen ablaufen, bevor die Operation abgeschlossen ist.
+ Die Zugriffsschlüssel-ID und die ID des geheimen Zugriffsschlüssels werden nicht übertragen oder im SQL-Code gespeichert.

Um die rollenbasierte Zugriffssteuerung zu verwenden, müssen Sie zunächst unter Verwendung des Amazon-Redshift-Servicerollentyps eine IAM-Rolle erstellen und die Rolle anschließend Ihrem Cluster hinzufügen. Die Rolle muss mindestens die in aufgelisteten Berechtigungen besitzen [IAM-Berechtigungen für COPY, UNLOAD und CREATE LIBRARY](#copy-usage_notes-iam-permissions). Schritte zum Erstellen einer IAM-Rolle und zum Anhängen dieser Rolle an Ihren Cluster finden Sie unter [Autorisieren von Amazon Redshift, in Ihrem Namen auf andere AWS Services zuzugreifen](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html) im *Amazon Redshift* Management Guide.

Sie können über die Amazon-Redshift-Managementkonsole, die CLI oder eine API einem Cluster eine Rolle hinzufügen oder die Rollen anzeigen, die mit einem Cluster verknüpft sind. Weitere Informationen finden Sie unter [Verknüpfen einer IAM-Rolle mit einem Cluster](https://docs.aws.amazon.com/redshift/latest/mgmt/copy-unload-iam-role.html) im *Amazon-Redshift-Verwaltungshandbuch*.

Beim Erstellen einer IAM-Rolle gibt IAM einen Amazon-Ressourcennamen (ARN) für die Rolle zurück. Um eine IAM-Rolle anzugeben, geben Sie für den ARN der Rolle entweder den Parameter [Verwenden des Parameters IAM\$1ROLE](copy-parameters-authorization.md#copy-iam-role) oder den Parameter [Verwenden des Parameters CREDENTIALS](copy-parameters-authorization.md#copy-credentials) an. 

Angenommen, die folgende Rolle ist dem Cluster angefügt.

```
"IamRoleArn": "arn:aws:iam::0123456789012:role/MyRedshiftRole"
```

Im folgenden Beispiel für den COPY-Befehl wird der Parameter IAM\$1ROLE mit dem ARN im vorherigen Beispiel verwendet, um Authentifizierung und Zugriff auf Amazon S3 bereitzustellen.

```
copy customer from 's3://amzn-s3-demo-bucket/mydata'  
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

Im folgenden Beispiel für den COPY-Befehl wird der Parameter CREDENTIALS verwendet, um die IAM-Rolle anzugeben.

```
copy customer from 's3://amzn-s3-demo-bucket/mydata' 
credentials 
'aws_iam_role=arn:aws:iam::0123456789012:role/MyRedshiftRole';
```

Darüber hinaus kann ein Superuser Datenbankbenutzern und -gruppen das Privileg ASSUMEROLE gewähren, um einer Rolle Zugriff auf COPY-Operationen zu ermöglichen. Weitere Informationen finden Sie unter [GRANT](r_GRANT.md).

## Schlüsselbasierte Zugriffssteuerung
<a name="copy-usage_notes-access-key-based"></a>

Bei der <a name="copy-usage_notes-access-key-based.phrase"></a>schlüsselbasierten Zugriffskontrolle geben Sie die Zugriffsschlüssel-ID und den geheimen Zugriffsschlüssel für einen IAM-Benutzer an, der berechtigt ist, auf die Ressourcen zuzugreifen, die die Daten enthalten. AWS Sie können entweder die Parameter [Verwenden der Parameter ACCESS\$1KEY\$1ID und SECRET\$1ACCESS\$1KEY](copy-parameters-authorization.md#copy-access-key-id) zusammen verwenden oder den Parameter [Verwenden des Parameters CREDENTIALS](copy-parameters-authorization.md#copy-credentials) verwenden.

**Anmerkung**  
Es wird nachdrücklich empfohlen, eine IAM-Rolle für die Authentifizierung zu verwenden, statt eine Zugriffsschlüssel-ID und einen geheimen Zugriffsschlüssel im Textformat bereitzustellen. Wenn Sie sich für die schlüsselbasierte Zugriffskontrolle entscheiden, verwenden Sie niemals Ihre AWS Kontoanmeldeinformationen (Root). Erstellen Sie stets einen IAM-Benutzer und geben Sie die Zugriffsschlüssel-ID und den geheimen Zugriffsschlüssel für diesen Benutzer an. Schritte zum Erstellen eines IAM-Benutzers finden Sie unter [Erstellen eines IAM-Benutzers in Ihrem AWS -Konto](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html).

Um sich mit ACCESS\$1KEY\$1ID und SECRET\$1ACCESS\$1KEY zu authentifizieren, ersetzen Sie und durch die Zugriffsschlüssel-ID *<access-key-id>* und den vollständigen *<secret-access-key>* geheimen Zugriffsschlüssel eines autorisierten Benutzers, wie unten gezeigt. 

```
ACCESS_KEY_ID '<access-key-id>'
SECRET_ACCESS_KEY '<secret-access-key>';
```

Um sich mit dem CREDENTIALS-Parameter zu authentifizieren, ersetzen Sie *<access-key-id>* und durch die Zugriffsschlüssel-ID und den *<secret-access-key>* vollständigen geheimen Zugriffsschlüssel eines autorisierten Benutzers, wie im Folgenden dargestellt.

```
CREDENTIALS
'aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret-access-key>';
```

Der IAM-Benutzer muss mindestens die in aufgelisteten Berechtigungen besitzen [IAM-Berechtigungen für COPY, UNLOAD und CREATE LIBRARY](#copy-usage_notes-iam-permissions).

### Temporäre Sicherheitsanmeldeinformationen
<a name="r_copy-temporary-security-credentials"></a>

 Wenn Sie die schlüsselbasierte Zugriffssteuerung verwenden, können Sie den Zugriff weiter einschränken, den Benutzer auf Ihre Daten haben, indem Sie temporäre Sicherheitsanmeldeinformationen verwenden. Die rollenbasierte Authentifizierung verwendet automatisch temporäre Anmeldeinformationen. 

**Anmerkung**  
Es wird nachdrücklich empfohlen, die [role-based access control](#copy-usage_notes-access-role-based.phrase) zu verwenden, statt temporäre Anmeldeinformationen zu erstellen und Zugriffsschlüssel-ID und einen geheimen Zugriffsschlüssel in Form von reinem Text bereitzustellen. Die rollenbasierte Zugriffssteuerung verwendet automatisch temporäre Anmeldeinformationen. 

Temporäre Sicherheitsanmeldeinformationen bieten erweiterte Sicherheit, da sie nur kurzlebig sind und nach ihrem Ablauf nicht erneut verwendet werden können. Die Zugriffsschlüssel-ID und der geheime Zugriffsschlüssel, die mit dem Token generiert werden, können nicht ohne das Token verwendet werden. Ein Benutzer, der diese temporären Sicherheitsanmeldeinformationen besitzt, kann auf Ihre Ressourcen nur solange zugreifen, bis die Anmeldeinformationen ablaufen.

Um Benutzern temporären Zugriff auf Ihre Ressourcen zu gewähren, rufen Sie AWS -Security-Token-Service (AWS STS) API-Operationen auf. Die AWS STS API-Operationen geben temporäre Sicherheitsanmeldeinformationen zurück, die aus einem Sicherheitstoken, einer Zugriffsschlüssel-ID und einem geheimen Zugriffsschlüssel bestehen. Sie geben die temporären Sicherheitsanmeldeinformationen an die Benutzer aus, die temporären Zugriff auf Ihre Ressourcen benötigen. Bei diesen Benutzern kann es sich um vorhandene IAM-Benutzer oder um Benutzer außerhalb von AWS handeln. Weitere Informationen zum Erstellen temporärer Sicherheitsanmeldeinformationen finden Sie unter [Temporäre Sicherheitsanmeldeinformationen](https://docs.aws.amazon.com/STS/latest/UsingSTS/Welcome.html) im IAM-Benutzerhandbuch.

Sie können die [Verwenden der Parameter ACCESS\$1KEY\$1ID und SECRET\$1ACCESS\$1KEY](copy-parameters-authorization.md#copy-access-key-id)-Parameter zusammen mit dem Parameter [SESSION\$1TOKEN](copy-parameters-authorization.md#copy-token) oder dem Parameter [Verwenden des Parameters CREDENTIALS](copy-parameters-authorization.md#copy-credentials) verwenden. Sie müssen auch die Zugriffsschlüssel-ID und den geheimen Zugriffsschlüssel bereitstellen, die mit dem Token bereitgestellt wurden.

Um sich mit ACCESS\$1KEY\$1ID, SECRET\$1ACCESS\$1KEY und SESSION\$1TOKEN zu authentifizieren, ersetzen Sie, und wie im Folgenden gezeigt. *<temporary-access-key-id>* *<temporary-secret-access-key>* *<temporary-token>* 

```
ACCESS_KEY_ID '<temporary-access-key-id>'
SECRET_ACCESS_KEY '<temporary-secret-access-key>'
SESSION_TOKEN '<temporary-token>';
```

Um die Authentifizierung mittels CREDENTIALS durchzuführen, fügen Sie `session_token=<temporary-token>` in die Anmeldezeichenfolge ein wie im Folgenden gezeigt. 

```
CREDENTIALS
'aws_access_key_id=<temporary-access-key-id>;aws_secret_access_key=<temporary-secret-access-key>;session_token=<temporary-token>';
```

Im folgenden Beispiel wird ein COPY-Befehl mit temporären Sicherheitsanmeldeinformationen gezeigt.

```
copy table-name
from 's3://objectpath'
access_key_id '<temporary-access-key-id>'
secret_access_key '<temporary-secret-access-key>'
session_token '<temporary-token>';
```

Im folgenden Beispiel wird die Tabelle LISTING unter Verwendung temporärer Anmeldeinformationen und Dateiverschlüsselung geladen.

```
copy listing
from 's3://amzn-s3-demo-bucket/data/listings_pipe.txt'
access_key_id '<temporary-access-key-id>'
secret_access_key '<temporary-secret-access-key>'
session_token '<temporary-token>'
master_symmetric_key '<root-key>'
encrypted;
```

Im folgenden Beispiel wird die Tabelle LISTING unter Verwendung des Parameters CREDENTIALS mit temporären Anmeldeinformationen und Dateiverschlüsselung geladen.

```
copy listing
from 's3://amzn-s3-demo-bucket/data/listings_pipe.txt'
credentials 
'aws_access_key_id=<temporary-access-key-id>;aws_secret_access_key=<temporary-secret-access-key>;session_token=<temporary-token>;master_symmetric_key=<root-key>'
encrypted;
```

**Wichtig**  
Die temporären Sicherheitsanmeldeinformationen müssen für die gesamte Dauer der COPY- oder UNLOAD-Operation gültig sein. Wenn die temporären Sicherheitsanmeldeinformationen während der Operation ablaufen, schlägt der Befehl fehl und für die Transaktion wird ein Rollback ausgeführt. Wenn die temporären Sicherheitsanmeldeinformationen beispielsweise nach 15 Minuten ablaufen und die COPY-Operation eine Stunde benötigt, schlägt die Operation fehl, bevor sie abgeschlossen ist. Wenn Sie den rollenbasierten Zugriff verwenden, werden die temporären Sicherheitsanmeldeinformationen automatisch aktualisiert, bis die Operation abgeschlossen ist.

## IAM-Berechtigungen für COPY, UNLOAD und CREATE LIBRARY
<a name="copy-usage_notes-iam-permissions"></a>

Die IAM-Rolle oder der Benutzer, die bzw. der durch den Parameter CREDENTIALS referenziert wird, muss mindestens die folgenden Berechtigungen besitzen:
+ Für COPY aus Amazon S3 die LIST-Berechtigung für Amazon-S3-Buckets und die GET-Berechtigung für Amazon-S3-Objekte, die geladen werden, sowie die Manifestdatei, falls eine solche verwendet wird.
+ Für COPY von Amazon S3, Amazon EMR und Remote-Hosts (SSH) mit JSON-formatierten Daten die Berechtigung, die JSONPaths Datei auf Amazon S3 aufzulisten und abzurufen, falls eine verwendet wird. 
+ Für COPY aus DynamoDB, SCAN- und DESCRIBE-Berechtigung für die DynamoDB-Tabelle, die geladen wird. 
+ Für COPY aus einem Amazon-EMR-Cluster die Berechtigung für die `ListInstances`-Aktion auf dem Amazon EMR-Cluster. 
+ Für UNLOAD zu Amazon S3, GET-, LIST- und PUT-Berechtigungen für den Amazon-S3-Bucket, in den die Datendateien entladen werden.
+ Für CREATE LIBRARY aus Amazon S3 die LIST-Berechtigung für Amazon-S3-Buckets und die GET-Berechtigung für die zu importierenden Amazon-S3-Objekte.

**Anmerkung**  
Wenn Sie bei Ausführung eines COPY-, UNLOAD- oder CREATE LIBRARY-Befehls die Fehlermeldung `S3ServiceException: Access Denied` erhalten, besitzt Ihr Cluster nicht die korrekten Zugriffsberechtigungen für Amazon S3.

Sie können IAM-Berechtigungen verwalten, indem Sie einer IAM-Rolle, die Ihrem Cluster angefügt ist, Ihrem Benutzer oder der Gruppe, zu der Ihr Benutzer gehört, eine IAM-Richtlinie anfügen. Beispielsweise gewährt die verwaltete `AmazonS3ReadOnlyAccess`-Richtlinie LIST- und GET-Berechtigungen in Bezug auf Amazon-S3-Ressourcen. Weitere Informationen zu IAM-Richtlinien finden Sie unter [Verwalten von IAM-Richtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html) im *IAM-Benutzerhandbuch*. 

# Verwenden von COPY mit Amazon-S3-Zugriffspunkt-Aliasen
<a name="copy-usage_notes-s3-access-point-alias"></a>

COPY unterstützt Amazon-S3-Zugriffspunkt-Aliase. Weitere Informationen finden Sie unter [Verwenden eines Alias im Bucket-Stil für Ihren Zugriffspunkt](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points-alias.html) im *Amazon-Simple-Storage-Service-Benutzerhandbuch*.

# Laden von Multibyte-Daten aus Amazon S3
<a name="copy-usage_notes-multi-byte"></a>

Wenn Ihre Daten Multibyte-Zeichen enthalten, die andere als ASCII-Zeichen verwenden (beispielsweise chinesische oder kyrillische Zeichen), müssen Sie die Daten in VARCHAR-Spalten laden. Der VARCHAR-Datentyp unterstützt UTF-8-Zeichen mit vier Bytes. Der CHAR-Datentyp unterstützt jedoch nur ASCII-Zeichen mit einem Byte. Sie können keine Zeichen mit fünf Bytes oder mehr in Amazon-Redshift-Tabellen laden. Weitere Informationen finden Sie unter [Multibyte-Zeichen](c_Supported_data_types.md#c_Supported_data_types-multi-byte-characters). 

# Laden einer Spalte des Datentyps GEOMETRY oder GEOGRAPHY
<a name="copy-usage_notes-spatial-data"></a>

COPY in `GEOMETRY`- oder `GEOGRAPHY`-Spalten funktioniert nur aus Daten in einer zeichengetrennten Textdatei, z. B. einer CSV-Datei. Die Daten müssen in hexadezimaler Form des Well-Known-Binary-Formats (WKB oder EWKB) oder des Well-Known-Text-Formats (WKT oder EWKT) vorliegen und der maximalen Größe einer einzelnen Eingabezeile im COPY-Befehl angepasst sein. Weitere Informationen finden Sie unter [COPY](r_COPY.md). 

Weitere Informationen zum Laden aus einem Shapefile finden Sie unter [Laden eines Shapefile in Amazon Redshift](spatial-copy-shapefile.md).

Weitere Informationen zum `GEOMETRY`- oder `GEOGRAPHY`-Datentyp finden Sie unter [Abfrage von Geodaten in Amazon Redshift](geospatial-overview.md).

# Laden des Datentyps HLLSKETCH
<a name="copy-usage_notes-hll"></a>

Sie können HLL-Skizzen nur im Sparse- oder Dense-Format kopieren, das von Amazon Redshift unterstützt wird. Um den Befehl COPY für HyperLogLog Skizzen zu verwenden, verwenden Sie das Base64-Format für dichte Skizzen und das JSON-Format für HyperLogLog Skizzen mit geringer Dichte. HyperLogLog Weitere Informationen finden Sie unter [HyperLogLog Funktionen](hyperloglog-functions.md). 

Das folgende Beispiel importiert Daten aus einer CSV-Datei in eine Tabelle mit CREATE TABLE und COPY. Im Beispiel wird zunächst die Tabelle `t1` mit CREATE TABLE erstellt.

```
CREATE TABLE t1 (sketch hllsketch, a bigint);
```

Dann werden mit COPY Daten aus einer CSV-Datei in die Tabelle importiert `t1`. 

```
COPY t1 FROM s3://amzn-s3-demo-bucket/unload/' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' NULL AS 'null' CSV;
```

# Laden einer Spalte des Datentyps VARBYTE
<a name="copy-usage-varbyte"></a>

Sie können Daten aus einer Datei im CSV-, Parquet- und ORC-Format laden. Bei Verwendung des CSV-Formats werden die Daten aus einer Datei in hexadezimaler Darstellung der VARBYTE-Daten geladen. Sie können keine VARBYTE-Daten mit der `FIXEDWIDTH`-Option laden. Die COPY-Optionen `ADDQUOTES` und `REMOVEQUOTES` werden nicht unterstützt. VARBYTE-Spalten können nicht als Partitionsspalten verwendet werden. 

# Fehler beim Lesen mehrerer Dateien
<a name="copy-usage_notes-multiple-files"></a>

Der COPY-Befehl ist atomisch und transaktional. Mit anderen Worten, der gesamte Prozess wird als einzelne Transaktion behandelt, auch wenn der COPY-Befehl Daten aus mehreren Dateien liest. Wenn COPY beim Lesen einer Datei auf einen Fehler trifft, wird der Vorgang automatisch wiederholt, bis die Prozesszeit abläuft (siehe [statement\$1timeout](r_statement_timeout.md)) oder wenn über einen längeren Zeitraum (zwischen 15 und 30 Minuten) keine Daten aus Amazon S3 heruntergeladen werden können. Dabei wird sichergestellt, dass jede Datei nur einmal geladen wird. Wenn der COPY-Befehl fehlschlägt, wird die gesamte Transaktion abgebrochen und es wird ein Rollback für alle Änderungen ausgeführt. Weitere Informationen zur Handhabung von Fehlern beim Laden finden Sie unter [Fehlerbehebung bei Datenladevorgängen](t_Troubleshooting_load_errors.md). 

Wenn ein COPY-Befehl erfolgreich gestartet wurde, schlägt er nicht fehl, wenn die Sitzung beendet wird, beispielsweise, wenn die Verbindung des Clients getrennt wird. Wenn sich der COPY-Befehl jedoch innerhalb eines BEGIN … END-Transaktionsblocks befindet, der nicht abgeschlossen wird, weil die Sitzung beendet wird, wird für die gesamte Transaktion einschließlich der COPY-Operation ein Rollback ausgeführt. Weitere Informationen Transaktionen finden Sie unter [BEGIN](r_BEGIN.md).

# COPY von JSON-Format
<a name="copy-usage_notes-copy-from-json"></a>

Die JSON-Datenstruktur besteht aus einem Satz von Objekten oder Arrays. Ein JSON-*Objekt* beginnt und endet mit geschweiften Klammern und enthält eine nicht geordnete Sammlung von Name-Wert-Paaren. Jeder Name und jeder Wert werden durch einen Doppelpunkt getrennt und die Paare werden durch Kommas getrennt. Der Name ist eine Zeichenfolge in doppelten Anführungszeichen. Bei den Anführungszeichen muss es sich um normale Anführungszeichen (0x22) handeln. Es dürfen keine schrägen oder „smarte“ doppelte Anführungszeichen sein. 

Ein JSON-*Array* beginnt und endet mit eckigen Klammern und enthält eine geordnete Sammlung von Werten, getrennt durch Kommas. Ein Wert kann eine Zeichenfolge in doppelten Anführungszeichen, eine Zahl, ein boolescher Wert (wahr oder falsch), null, ein JSON-Objekt oder ein Array sein. 

JSON-Objekte und -Arrays können verschachtelt sein, was eine hierarchische Datenstruktur ermöglicht. Im folgenden Beispiel wird eine JSON-Datenstruktur mit zwei gültigen Objekten gezeigt. 

```
{
    "id": 1006410,
    "title": "Amazon Redshift Database Developer Guide"
}
{
    "id": 100540,
    "name": "Amazon Simple Storage Service User Guide"
}
```

Im Folgenden werden dieselben Daten als zwei JSON-Arrays gezeigt.

```
[
    1006410,
    "Amazon Redshift Database Developer Guide"
]
[
    100540,
    "Amazon Simple Storage Service User Guide"
]
```

## COPY-Optionen für JSON
<a name="copy-usage-json-options"></a>

Sie können die folgenden Optionen angeben, wenn Sie COPY mit Daten im JSON-Format verwenden: 
+ `'auto' ` – COPY lädt automatisch Felder aus der JSON-Datei. 
+ `'auto ignorecase'` – COPY lädt automatisch Felder aus der JSON-Datei, die Groß-/Kleinschreibung von Feldnamen wird ignoriert.
+ `s3://jsonpaths_file`— COPY verwendet eine JSONPaths Datei, um die JSON-Quelldaten zu analysieren. Eine *JSONPaths Datei* ist eine Textdatei, die ein einzelnes JSON-Objekt enthält, dessen Name mit einer Reihe von JSONPath Ausdrücken `"jsonpaths"` gepaart ist. Handelt es sich bei dem Namen um eine andere Zeichenfolge als`"jsonpaths"`, verwendet COPY das `'auto'` Argument anstelle der JSONPaths Datei. 

Beispiele, die zeigen, wie Daten mithilfe von`'auto'`, oder einer JSONPaths Datei geladen werden`'auto ignorecase'`, wobei entweder JSON-Objekte oder Arrays verwendet werden, finden Sie unter[Beispiele für die COPY-Operation aus JSON](r_COPY_command_examples.md#r_COPY_command_examples-copy-from-json). 

## JSONPath Option
<a name="copy-usage-json-options"></a>

In der Amazon Redshift COPY-Syntax gibt ein JSONPath Ausdruck den expliziten Pfad zu einem einzelnen Namenselement in einer hierarchischen JSON-Datenstruktur an, wobei entweder Klammern oder Punkte verwendet werden. Amazon Redshift unterstützt keine JSONPath Elemente wie Platzhalterzeichen oder Filterausdrücke, die zu einem mehrdeutigen Pfad oder mehreren Namenselementen aufgelöst werden könnten. Daher kann Amazon Redshift keine komplexen Datenstrukturen mit mehreren Ebenen analysieren.

Im Folgenden finden Sie ein Beispiel für eine JSONPaths Datei mit JSONPath Ausdrücken, die die Klammernotation verwenden. Das Dollarzeichen (\$1) stellt die Stammebenenstruktur dar. 

```
{
    "jsonpaths": [
       "$['id']",
       "$['store']['book']['title']",
	"$['location'][0]" 
    ]
}
```

 Im vorherigen Beispiel referenziert `$['location'][0]` das erste Element in einem Array. JSON verwendet eine nullbasierte Array-Indizierung. Bei Array-Indizes muss es sich um positive Ganzzahlen handeln (größer als oder gleich null).

Das folgende Beispiel zeigt die vorherige JSONPaths Datei in Punktnotation. 

```
{
    "jsonpaths": [
       "$.id",
       "$.store.book.title",
	"$.location[0]"
    ]
}
```

Sie können Klammer- und Punktnotierung im `jsonpaths`-Array nicht mischen. Eckige Klammern können sowohl in der Klammer- als auch in der Punktnotierung verwendet werden, um ein Array-Element zu referenzieren. 

Bei Verwendung der Punktnotation dürfen die JSONPath Ausdrücke die folgenden Zeichen nicht enthalten: 
+ Einfache gerade Anführungszeichen (') 
+ Punkt (.) 
+ Eckige Klammern ([]), es sei denn, sie werden verwendet, um ein Array-Element zu referenzieren 

Wenn es sich bei dem Wert in dem Name-Wert-Paar, auf das ein JSONPath Ausdruck verweist, um ein Objekt oder ein Array handelt, wird das gesamte Objekt oder die Matrix als Zeichenfolge geladen, einschließlich der geschweiften Klammern. Angenommen, Ihre JSON-Daten enthalten das folgende Objekt. 

```
{
    "id": 0,
    "guid": "84512477-fa49-456b-b407-581d0d851c3c",
    "isActive": true,
    "tags": [
        "nisi",
        "culpa",
        "ad",
        "amet",
        "voluptate",
        "reprehenderit",
        "veniam"
    ],
    "friends": [
        {
            "id": 0,
            "name": "Martha Rivera"
        },
        {
            "id": 1,
            "name": "Renaldo"
        }
    ]
}
```

Der JSONPath Ausdruck gibt `$['tags']` dann den folgenden Wert zurück. 

```
"["nisi","culpa","ad","amet","voluptate","reprehenderit","veniam"]" 
```

Der JSONPath Ausdruck gibt `$['friends'][1]` dann den folgenden Wert zurück. 

```
"{"id": 1,"name": "Renaldo"}" 
```

Jeder JSONPath Ausdruck im `jsonpaths` Array entspricht einer Spalte in der Amazon Redshift Redshift-Zieltabelle. Die Reihenfolge der `jsonpaths`-Array-Elemente muss der Reihenfolge der Spalten in der Zieltabelle oder Spaltenliste entsprechen, wenn eine Spaltenliste verwendet wird. 

Beispiele, die zeigen, wie Daten entweder mit dem `'auto'` Argument oder einer JSONPaths Datei geladen werden und dabei entweder JSON-Objekte oder Arrays verwendet werden, finden Sie unter. [Beispiele für die COPY-Operation aus JSON](r_COPY_command_examples.md#r_COPY_command_examples-copy-from-json) 

Informationen zum Kopieren mehrerer JSON-Dateien finden Sie unter [Verwenden eines Manifests für die Angabe von Datendateien](loading-data-files-using-manifest.md).

## Escape-Zeichen in JSON
<a name="copy-usage-json-escape-characters"></a>

COPY lädt `\n` als Zeichen für neue Zeilen und `\t` als Tabulatorzeichen. Um einen Backslash zu laden, muss ein Backslash als Escape-Zeichen verwendet werden ( `\\` ).

Angenommen, es gibt die folgenden JSON-Daten in einer Datei namens `escape.json` im Bucket `s3://amzn-s3-demo-bucket/json/`.

```
{
  "backslash": "This is a backslash: \\",
  "newline": "This sentence\n is on two lines.",
  "tab": "This sentence \t contains a tab."
}
```

Führen Sie die folgenden Befehle aus, um die Tabelle ESCAPES zu erstellen und JSON zu laden.

```
create table escapes (backslash varchar(25), newline varchar(35), tab varchar(35));

copy escapes from 's3://amzn-s3-demo-bucket/json/escape.json' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
format as json 'auto';
```

Führen Sie eine Abfrage für die Tabelle ESCAPES aus, um die Ergebnisse anzuzeigen.

```
select * from escapes;

       backslash        |      newline      |               tab
------------------------+-------------------+----------------------------------
 This is a backslash: \ | This sentence     | This sentence    contains a tab.
                        :  is on two lines.
(1 row)
```

## Verlust der numerischen Präzision
<a name="copy-usage-json-rounding"></a>

Wenn Sie Zahlen aus Datendateien im JSON-Format in eine Spalte laden, die als numerischer Datentyp formatiert ist, geht möglicherweise die Präzision verloren. Einige Gleitpunktwerte werden in Rechnersystemen nicht genau dargestellt. Dies hat zur Folge, dass aus einer JSON-Datei kopierte Daten nicht wie von Ihnen erwartet gerundet werden. Um einen Verlust der Präzision zu vermeiden, raten wir zur Verwendung einer der folgenden Alternativen:
+ Stellen Sie die Zahl als eile Zeichenfolge dar, deren Wert in doppelte Anführungszeichen gesetzt wird.
+ Verwenden Sie [ROUNDEC](copy-parameters-data-conversion.md#copy-roundec), um die Zahl zu runden, anstatt sie zu kürzen.
+ Verwenden Sie anstelle von JSON- oder Avro-Dateien CSV-, durch Zeichen begrenzte oder Textdateien fester Breite.

# COPY aus spaltenbasierten Datenformaten
<a name="copy-usage_notes-copy-from-columnar"></a>

COPY kann Daten aus Amazon S3 in folgenden spaltenbasierten Formaten laden:
+ ORC
+ Parquet

Beispiele für die Verwendung von COPY aus spaltenbasierten Datenformaten finden Sie unter [Beispiele für COPY](r_COPY_command_examples.md).

COPY unterstützt Daten im Spaltenformat unter Berücksichtigung der folgenden Überlegungen:
+ Der Amazon S3 S3-Bucket muss sich in derselben AWS Region wie die Amazon Redshift Redshift-Datenbank befinden. 
+ Um über einen VPC-Endpunkt auf Ihre Amazon-S3-Daten zugreifen zu können, richten Sie den Zugriff mithilfe von IAM-Richtlinien und IAM-Rollen ein, wie unter [Verwendung von Amazon Redshift Spectrum mit Enhanced VPC-Routing](https://docs.aws.amazon.com/redshift/latest/mgmt/spectrum-enhanced-vpc.html) im *Amazon-Redshift-Verwaltungshandbuch* beschrieben. 
+ COPY wendet Kompressionskodierungen nicht automatisch an. 
+ Es werden nur die folgenden COPY-Parameter unterstützt: 
  + [ACCEPTINVCHARS](copy-parameters-data-conversion.md#copy-acceptinvchars) beim Kopieren aus einer ORC- oder Parquet-Datei.
  + [FILLRECORD](copy-parameters-data-conversion.md#copy-fillrecord)
  + [FROM](copy-parameters-data-source-s3.md#copy-parameters-from)
  + [IAM\$1ROLE](copy-parameters-authorization.md#copy-iam-role)
  + [CREDENTIALS](copy-parameters-authorization.md#copy-credentials)
  + [STATUPDATE ](copy-parameters-data-load.md#copy-statupdate)
  + [MANIFEST](copy-parameters-data-source-s3.md#copy-manifest)
  + [EXPLICIT\$1IDS](copy-parameters-data-conversion.md#copy-explicit-ids)
+ Tritt beim Laden ein Fehler auf, schlägt der COPY-Befehl fehl. ACCEPTANYDATE und MAXERROR werden für spaltenbasierte Datentypen nicht unterstützt.
+ Fehlermeldungen werden an den SQL-Client gesendet. Einige Fehler werden in STL\$1LOAD\$1ERRORS und STL\$1ERROR protokolliert.
+ COPY fügt Werte in derselben Reihenfolge in die Spalten der Zieltabelle ein, in der die Spalten in den spaltenbasierten Datendateien vorkommen. Die Anzahl der Spalten in der Zieltabelle und die Anzahl der Spalten in der Datendatei müssen übereinstimmen.
+ Wenn die Datei, die Sie für die COPY-Operation angeben, eine der folgenden Erweiterungen besitzt, werden die Daten dekomprimiert, ohne dass Parameter hinzugefügt werden müssen: 
  + `.gz`
  + `.snappy`
  + `.bz2`
+ COPY aus den Dateiformaten Parquet und ORC verwendet Redshift Spectrum und den Bucket-Zugriff. Um COPY für diese Formate zu verwenden, stellen Sie sicher, dass es keine IAM-Richtlinien gibt, die die Verwendung von Amazon S3 URLs vorsigniert blockieren. Die von Amazon Redshift URLs generierten vorsignierten Dateien sind 1 Stunde gültig, sodass Amazon Redshift genügend Zeit hat, um alle Dateien aus dem Amazon S3 S3-Bucket zu laden. Für jede von COPY gescannte Datei aus spaltenbasierten Datenformaten wird eine eindeutige vorsignierte URL generiert. Sie müssen bei Bucket-Richtlinien, die die Aktion `s3:signatureAge` enthalten, den Wert auf mindestens 3.600.000 Millisekunden festlegen. Weitere Informationen finden Sie unter [Verwenden von Amazon Redshift Spectrum mit Enhanced VPC Routing](https://docs.aws.amazon.com/redshift/latest/mgmt/spectrum-enhanced-vpc.html).
+ Der Parameter REGION wird bei COPY aus spaltenbasierten Datenformaten nicht unterstützt. Selbst wenn sich Ihr Amazon S3 S3-Bucket und Ihre Datenbank im selben Ordner befinden AWS-Region, kann es zu einem Fehler kommen, z. B. dass das Argument REGION für das PARQUET-basierte COPY nicht unterstützt wird.
+ COPY aus Spaltenformaten unterstützt jetzt die Parallelitätsskalierung. Informationen zur Aktivierung der Parallelitätsskalierung finden Sie unter [Konfigurieren von Warteschlangen mit Parallelitätsskalierung](https://docs.aws.amazon.com/redshift/latest/dg/concurrency-scaling.html#concurrency-scaling-queues).

# DATEFORMAT- und TIMEFORMAT-Zeichenfolgen
<a name="r_DATEFORMAT_and_TIMEFORMAT_strings"></a>

Der COPY-Befehl verwendet die Optionen DATEFORMAT und TIMEFORMAT zur Analyse von Datums- und Zeitwerten in Ihren Quelldaten. DATEFORMAT und TIMEFORMAT sind formatierte Zeichenfolgen, die dem Format der Datums- und Zeitwerte Ihrer Quelldaten entsprechen müssen. Ein COPY-Befehl, der Quelldaten mit dem Datumswert `Jan-01-1999` lädt, muss beispielsweise die folgende DATEFORMAT-Zeichenfolge enthalten:

```
COPY ...
            DATEFORMAT AS 'MON-DD-YYYY'
```

Weitere Informationen zur Verwaltung von COPY-Datenkonvertierungen finden Sie unter [Datenkonvertierungsparameter](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-conversion.html). 

Die DATEFORMAT- oder TIMEFORMAT-Zeichenfolgen können Datums-/Uhrzeittrennzeichen (wie „`-`“, „`/`“ oder „`:`“) sowie die Datumsteil– und Zeitteilformate in der folgenden Tabelle enthalten.

**Anmerkung**  
Wenn Sie das Format Ihrer Datums- oder Zeitwerte nicht mit den folgenden Datumsteilen und Zeitteilen abgleichen können oder wenn Ihre Datums- und Zeitwerte unterschiedliche Formate aufweisen, verwenden Sie das Argument `'auto'` mit dem Parameter DATEFORMAT oder TIMEFORMAT. Das Argument `'auto'` erkennt verschiedene Formate, die bei der Verwendung einer DATEFORMAT- oder TIMEFORMAT-Zeichenfolge nicht unterstützt werden. Weitere Informationen finden Sie unter [Verwenden der automatischen Erkennung bei DATEFORMAT und TIMEFORMAT](automatic-recognition.md).

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/redshift/latest/dg/r_DATEFORMAT_and_TIMEFORMAT_strings.html)

Das Standard-Datumsformat ist. YYYY-MM-DD Das Standardformat für Zeitstempel ohne Zeitzone (TIMESTAMP) ist YYYY-MM-DD HH:MI:SS. Der Standardzeitstempel im Zeitzonenformat (TIMESTAMPTZ) ist YYYY-MM-DD HH:MI:SSOF, wobei OF der UTC-Wert ist (z. B. - 8:00). Sie können keinen Zeitzonenbezeichner (TZ, tz oder OF) in die timeformat\$1string aufnehmen. Das Feld Sekunden (SS) unterstützt auch Sekundenbruchteile bis zu einer Detailgenauigkeit von Mikrosekunden. Um TIMESTAMPTZ-Daten zu laden, die sich in einem anderen Format als dem Standardformat befinden, geben Sie 'auto' an.

Im Folgenden finden Sie einige Beispiele für Datumsangaben oder Uhrzeiten, die Sie in Ihren Quelldaten finden können, sowie die entsprechenden DATEFORMAT- oder TIMEFORMAT-Zeichenfolgen.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/redshift/latest/dg/r_DATEFORMAT_and_TIMEFORMAT_strings.html)

## Beispiel
<a name="r_DATEFORMAT_and_TIMEFORMAT_strings-examples"></a>

Ein Beispiel für die Verwendung von TIMEFORMAT finden Sie unter [Laden eines Zeit- oder Datumsstempels](r_COPY_command_examples.md#r_COPY_command_examples-load-a-time-datestamp).

# Verwenden der automatischen Erkennung bei DATEFORMAT und TIMEFORMAT
<a name="automatic-recognition"></a>

Wenn Sie `'auto'` als Argument für den Parameter DATEFORMAT oder TIMEFORMAT angeben, erkennt Amazon Redshift automatisch das Datums- oder Zeitformat in Ihren Quelldaten und konvertiert es. Es folgt ein Beispiel.

```
copy favoritemovies from 'dynamodb://ProductCatalog' 
iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole'
dateformat 'auto';
```

Wenn COPY mit dem Argument `'auto'` für DATEFORMAT und TIMEFORMAT verwendet wird, erkennt COPY die Datums- und Zeitformate, die in der Tabelle in [DATEFORMAT- und TIMEFORMAT-ZeichenfolgenBeispiel](r_DATEFORMAT_and_TIMEFORMAT_strings.md) aufgelistet sind. Zusätzlich erkennt das Argument `'auto'` die folgenden Formate, die bei Verwendung einer DATEFORMAT- und TIMEFORMAT-Zeichenfolge nicht unterstützt werden.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/redshift/latest/dg/automatic-recognition.html)

Die automatische Erkennung unterstützt keine Epochensekunden und Epochenmillisekunden.

Um herauszufinden, ob ein Datums- oder Zeitstempelwert automatisch konvertiert wird, verwenden Sie eine CAST-Funktion, um zu versuchen, die Zeichenfolge in einen Datums- oder Zeitstempelwert zu konvertieren. Mit den folgenden Befehlen wird beispielsweise der Zeitstempelwert getestet `'J2345678 04:05:06.789'`:

```
create table formattest (test char(21));
insert into formattest values('J2345678 04:05:06.789');
select test, cast(test as timestamp) as timestamp, cast(test as date) as date from formattest;

        test          |      timestamp      |	date
----------------------+---------------------+------------
J2345678 04:05:06.789   1710-02-23 04:05:06	1710-02-23
```

Wenn die Quelldaten für eine DATE-Spalte Zeitinformationen enthalten, wird die Zeitkomponente abgeschnitten. Wenn die Quelldaten für eine TIMESTAMP-Spalte Zeitinformationen auslassen, wird für die Zeitkomponente 00:00:00 verwendet.