

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.

# Laden von Daten in einen Amazon Aurora MySQL-DB-Cluster aus Textdateien in einem Amazon S3-Bucket
<a name="AuroraMySQL.Integrating.LoadFromS3"></a><a name="load_from_s3"></a><a name="load_data"></a><a name="load_xml"></a>

Sie können den Ausdruck `LOAD DATA FROM S3` oder `LOAD XML FROM S3` verwenden, um Daten aus Dateien zu laden, die in einem Amazon S3-Bucket gespeichert sind. In Aurora MySQL werden die Dateien zuerst auf der lokalen Festplatte gespeichert und dann in die Datenbank importiert. Nachdem die Importe in die Datenbank abgeschlossen sind, werden die lokalen Dateien gelöscht.

**Anmerkung**  
Für Aurora Serverless v1 wird das Laden von Daten aus Textdateien in eine Tabelle nicht unterstützt. Für Aurora Serverless v2 wird sie unterstützt.

**Contents**
+ [Gewähren von Zugriff auf Amazon S3 für Aurora](#AuroraMySQL.Integrating.LoadFromS3.Authorize)
+ [Erteilen von Berechtigungen für das Laden von Daten in Amazon Aurora MySQL](#AuroraMySQL.Integrating.LoadFromS3.Grant)
+ [Angeben des Pfads (URI) zu einem Amazon-S3-Bucket](#AuroraMySQL.Integrating.LoadFromS3.URI)
+ [LOAD DATA FROM S3](#AuroraMySQL.Integrating.LoadFromS3.Text)
  + [Syntax](#AuroraMySQL.Integrating.LoadFromS3.Text.Syntax)
  + [Parameters](#AuroraMySQL.Integrating.LoadFromS3.Text.Parameters)
  + [Verwenden eines Manifests für zu ladende Dateien](#AuroraMySQL.Integrating.LoadFromS3.Manifest)
    + [Überprüfen der geladenen Dateien mit der Tabelle „aurora\$1s3\$1load\$1history“](#AuroraMySQL.Integrating.LoadFromS3.Manifest.History)
  + [Beispiele](#AuroraMySQL.Integrating.LoadFromS3.Text.Examples)
+ [LOAD XML FROM S3](#AuroraMySQL.Integrating.LoadFromS3.XML)
  + [Syntax](#AuroraMySQL.Integrating.LoadFromS3.XML.Syntax)
  + [Parameters](#AuroraMySQL.Integrating.LoadFromS3.XML.Parameters)

## Gewähren von Zugriff auf Amazon S3 für Aurora
<a name="AuroraMySQL.Integrating.LoadFromS3.Authorize"></a>

Bevor Sie Daten aus einem Amazon S3-Bucket laden können, müssen Sie Ihrem Aurora MySQL-DB-Cluster die Berechtigung für den Zugriff auf Amazon S3 erteilen.

**So gewähren Sie Aurora MySQL Zugriff auf Amazon S3:**

1. Erstellen Sie eine AWS Identity and Access Management (IAM-) Richtlinie, die die Bucket- und Objektberechtigungen bereitstellt, die Ihrem Aurora MySQL-DB-Cluster den Zugriff auf Amazon S3 ermöglichen. Detaillierte Anweisungen finden Sie unter [Erstellen einer IAM-Zugriffsrichtlinie für Amazon S3-Ressourcen](AuroraMySQL.Integrating.Authorizing.IAM.S3CreatePolicy.md).
**Anmerkung**  
In Aurora MySQL Version 3.05 und höher können Sie Objekte laden, die mit vom Kunden verwalteten AWS KMS keys verschlüsselt sind. Nehmen Sie dazu die Berechtigung `kms:Decrypt` in Ihre IAM-Richtlinie auf. Weitere Informationen finden Sie unter [Erstellen einer IAM-Richtlinie für den Zugriff auf Ressourcen AWS KMS](AuroraMySQL.Integrating.Authorizing.IAM.KMSCreatePolicy.md).  
Sie benötigen diese Berechtigung nicht, um Objekte zu laden, die mit Von AWS verwaltete Schlüssel Amazon S3 S3-verwalteten Schlüsseln (SSE-S3) verschlüsselt wurden.

1. Erstellen Sie eine IAM-Rolle und fügen Sie der neuen IAM-Rolle die IAM-Richtlinie hinzu, die Sie in [Erstellen einer IAM-Zugriffsrichtlinie für Amazon S3-Ressourcen](AuroraMySQL.Integrating.Authorizing.IAM.S3CreatePolicy.md) erstellt haben. Detaillierte Anweisungen finden Sie unter [Eine IAM-Rolle erstellen, um Amazon Aurora den Zugriff auf AWS Services zu ermöglichen](AuroraMySQL.Integrating.Authorizing.IAM.CreateRole.md).

1. Stellen Sie sicher, dass der DB-Cluster eine benutzerdefinierte DB-Cluster-Parametergruppe verwendet.

   Weitere Informationen über das Erstellen einer benutzerdefinierten DB-Cluster-Parametergruppe finden Sie unter [Eine DB-Cluster-Parametergruppe in Amazon Aurora erstellen](USER_WorkingWithParamGroups.CreatingCluster.md).

1. Legen Sie in Aurora MySQL Version 2 einen der DB-Cluster-Parameter `aurora_load_from_s3_role` oder `aws_default_s3_role` auf den Amazon-Ressourcennamen (ARN) der neuen IAM-Rolle fest. Wenn für `aurora_load_from_s3_role` keine IAM-Rolle angegeben wird, verwendet Aurora die unter `aws_default_s3_role` angegebene IAM-Rolle.

   Verwenden Sie `aws_default_s3_role` in Aurora MySQL Version 3.

   Wenn das Cluster Teil einer globalen Aurora-Datenbank ist, legen Sie diesen Parameter für jedes Aurora-Cluster in der globalen Datenbank fest. Auch wenn nur das primäre Cluster in einer globalen Aurora-Datenbank Daten laden kann, kann ein anderes Cluster durch den Failover-Mechanismus zum primären Cluster hochgestuft werden.

   Weitere Informationen zu DB-Cluster-Parametern finden Sie unter [Amazon Aurora-DB-Cluster und DB-Instance-Parameter](USER_WorkingWithDBClusterParamGroups.md#Aurora.Managing.ParameterGroups).

1. Weisen Sie die Rolle, die Sie in [Eine IAM-Rolle erstellen, um Amazon Aurora den Zugriff auf AWS Services zu ermöglichen](AuroraMySQL.Integrating.Authorizing.IAM.CreateRole.md) erstellt haben, diesem DB-Cluster zu, um Datenbankbenutzern in einem Aurora MySQL DB-Cluster den Zugriff auf Amazon S3 zu erlauben. Bei einer globalen Aurora-Datenbank verknüpfen Sie die Rolle mit jedem Aurora-Cluster in der globalen Datenbank. Weitere Informationen zum Zuordnen einer IAM-Rolle zu einem DB-Cluster finden Sie unter [Zuweisen einer IAM-Rolle zu einem Amazon-Aurora-MySQL-DB-Cluster](AuroraMySQL.Integrating.Authorizing.IAM.AddRoleToDBCluster.md).

1. Konfigurieren Sie Ihren Aurora MySQL-DB-Cluster so, dass er ausgehende Verbindungen zu Amazon S3 zulässt. Detaillierte Anweisungen finden Sie unter [Aktivierung der Netzwerkkommunikation von Amazon Aurora zu anderen AWS Diensten](AuroraMySQL.Integrating.Authorizing.Network.md). 

   Wenn Ihr -DB-Cluster nicht öffentlich zugänglich ist und sich nicht in einem öffentlichen VPC-Subnetz befindet, ist er privat. Sie können einen S3-Gateway-Endpunkt für den Zugriff auf Ihren S3-Bucket erstellen. Weitere Informationen finden Sie unter [Gateway-Endpunkte für Amazon S3](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html).

    Bei einer globalen Aurora-Datenbank aktivieren Sie ausgehende Verbindungen für jeden Aurora-Cluster in der globalen Datenbank. 

## Erteilen von Berechtigungen für das Laden von Daten in Amazon Aurora MySQL
<a name="AuroraMySQL.Integrating.LoadFromS3.Grant"></a>

Der Datenbankbenutzer, der die `LOAD DATA FROM S3`- oder `LOAD XML FROM S3`-Anweisung ausgibt, muss über eine bestimmte Rolle oder Berechtigung verfügen, um eine der Anweisungen auszugeben. In Aurora MySQL Version 3 gewähren Sie die Rolle `AWS_LOAD_S3_ACCESS`. In Aurora MySQL Version 2 gewähren Sie die Berechtigung `LOAD FROM S3`. Dem Administratorbenutzer für ein DB-Cluster wird die entsprechende Rolle oder -Berechtigung standardmäßig gewährt. Sie können die Berechtigung einem anderen Benutzer erteilen, indem Sie eine der folgenden Anweisungen verwenden.

 Verwenden Sie die folgende Anweisung für Aurora MySQL Version 3: 

```
GRANT AWS_LOAD_S3_ACCESS TO 'user'@'domain-or-ip-address'
```

**Tipp**  
Wenn Sie die Rollentechnik in Aurora MySQL Version 3 verwenden, können Sie die Rolle auch mit der Anweisung `SET ROLE role_name` oder `SET ROLE ALL` aktivieren. Wenn Sie mit dem MySQL 8.0-Rollensystem nicht vertraut sind, finden Sie in [Rollenbasiertes Berechtigungsmodell](AuroraMySQL.Compare-80-v3.md#AuroraMySQL.privilege-model) weitere Informationen. Weitere Informationen finden Sie unter [Verwenden von Rollen](https://dev.mysql.com/doc/refman/8.0/en/roles.html) im *MySQL-Referenzhandbuch*.  
Dies gilt nur für die aktuelle aktive Sitzung. Wenn Sie sich wieder verbinden, müssen Sie die `SET ROLE`-Anweisung noch einmal ausführen, um Berechtigungen zu gewähren. Weitere Informationen finden Sie unter [SET ROLE-Anweisung](https://dev.mysql.com/doc/refman/8.0/en/set-role.html) im *MySQL-Referenzhandbuch*.  
Sie können den DB-Cluster-Parameter `activate_all_roles_on_login` zum automatischen Aktivieren aller Rollen verwenden, wenn ein Benutzer eine Verbindung mit einer DB-Instance herstellt. Wenn dieser Parameter festgelegt ist, müssen Sie die `SET ROLE`-Anweisung in der Regel nicht explizit aufrufen, um eine Rolle zu aktivieren. Weitere Informationen finden Sie unter [activate\$1all\$1roles\$1on\$1login](https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_activate_all_roles_on_login) im *MySQL-Referenzhandbuch*.  
Sie müssen jedoch `SET ROLE ALL` zu Beginn einer gespeicherten Prozedur explizit aufrufen, um die Rolle zu aktivieren, wenn die gespeicherte Prozedur von einem anderen Benutzer aufgerufen wird.

Verwenden Sie die folgende Anweisung für Aurora MySQL Version 2:

```
GRANT LOAD FROM S3 ON *.* TO 'user'@'domain-or-ip-address'
```

Die Rolle `AWS_LOAD_S3_ACCESS` und die Berechtigung `LOAD FROM S3` sind spezifisch für Amazon Aurora und nicht für externe MySQL-Datenbanken oder DB-Instances von RDS für MySQL verfügbar. Wenn Sie die Replikation zwischen einem Aurora-DB-Cluster als Replikationsquelle und einer MySQL-Datenbank als Replikations-Client eingerichtet haben, führt die `GRANT`-Anweisung für die Rolle oder Berechtigung dazu, dass die Replikation mit einem Fehler beendet wird. Sie können diese Fehlermeldung ignorieren und mit der Replikation fortfahren. Verwenden Sie das Verfahren [mysql\$1rds\$1skip\$1repl\$1error](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/mysql_rds_skip_repl_error.html), um die Fehlermeldung für eine Instance von RDS für MySQL zu überspringen. Um den Fehler in einer externen MySQL-Datenbank zu überspringen, verwenden Sie die Systemvariable [slave\$1skip\$1errors](https://dev.mysql.com/doc/refman/5.7/en/replication-options-replica.html#sysvar_slave_skip_errors) (Aurora MySQL Version 2) oder die Systemvariable [replica\$1skip\$1errors](https://dev.mysql.com/doc/refman/8.0/en/replication-options-replica.html#sysvar_replica_skip_errors) (Aurora MySQL Version 3).

**Anmerkung**  
Der Datenbankbenutzer muss über `INSERT`-Berechtigungen für die Datenbank verfügen, in die er Daten lädt.

## Angeben des Pfads (URI) zu einem Amazon-S3-Bucket
<a name="AuroraMySQL.Integrating.LoadFromS3.URI"></a>

Mit folgender Syntax wird der Pfad (URI) zu Dateien angegeben, die in einem Amazon-S3-Bucket gespeichert sind.

```
s3-region://amzn-s3-demo-bucket/file-name-or-prefix
```

Der Pfad enthält die folgenden Werte:
+ `region`(optional) — Die AWS Region, die den Amazon S3 S3-Bucket enthält, aus dem geladen werden soll. Dieser Wert ist optional. Falls Sie keinen Wert für `region` angeben, lädt Aurora die Datei aus Amazon S3 in derselben Region wie Ihr DB-Cluster.
+ `bucket-name` – Der Name des Amazon S3-Buckets mit den zu ladenden Daten. Objekt-Präfixe, die einen virtuellen Ordnerpfad identifizieren, werden unterstützt.
+ `file-name-or-prefix` – Der Name der Amazon S3-Textdatei oder XML-Datei oder ein Präfix, das eine oder mehrere Text- oder XML-Dateien zum Laden bestimmt. Sie können auch eine Manifestdatei festlegen, die eine oder mehrere Textdateien zum Laden angibt. Weitere Informationen darüber, wie Sie mit einer Manifestdatei Textdateien aus Amazon S3 laden, finden Sie unter [Verwenden eines Manifests für zu ladende Dateien](#AuroraMySQL.Integrating.LoadFromS3.Manifest).

**So kopieren Sie den URI für Dateien in einem S3-Bucket**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die Amazon S3 S3-Konsole unter [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Wählen Sie im Navigationsbereich **Buckets** und dann den Bucket aus, dessen URI Sie kopieren möchten.

1. Wählen Sie das Präfix oder die Datei aus, die Sie aus S3 laden möchten.

1. Wählen Sie **S3-URI kopieren** aus.

## LOAD DATA FROM S3
<a name="AuroraMySQL.Integrating.LoadFromS3.Text"></a>

Mit der Anweisung `LOAD DATA FROM S3` können Sie Daten in jedem Textdateiformat laden, das von der MySQL-Anweisung [LOAD DATA INFILE](https://dev.mysql.com/doc/refman/8.0/en/load-data.html) unterstützt wird (z. B. durch Komma-getrennte Textdaten). Komprimierte Dateien werden nicht unterstützt.

**Anmerkung**  
Stellen Sie sicher, dass Ihr Aurora-MySQL-DB-Cluster ausgehende Verbindungen zu S3 zulässt. Weitere Informationen finden Sie unter [Aktivierung der Netzwerkkommunikation von Amazon Aurora zu anderen AWS Diensten](AuroraMySQL.Integrating.Authorizing.Network.md).

### Syntax
<a name="AuroraMySQL.Integrating.LoadFromS3.Text.Syntax"></a>

```
LOAD DATA [FROM] S3 [FILE | PREFIX | MANIFEST] 'S3-URI'
    [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [PARTITION (partition_name,...)]
    [CHARACTER SET charset_name]
    [{FIELDS | COLUMNS}
        [TERMINATED BY 'string']
        [[OPTIONALLY] ENCLOSED BY 'char']
        [ESCAPED BY 'char']
    ]
    [LINES
        [STARTING BY 'string']
        [TERMINATED BY 'string']
    ]
    [IGNORE number {LINES | ROWS}]
    [(col_name_or_user_var,...)]
    [SET col_name = expr,...]
```

**Anmerkung**  
In Aurora MySQL Version 3.05 und höher ist das Schlüsselwort `FROM` optional.

### Parameters
<a name="AuroraMySQL.Integrating.LoadFromS3.Text.Parameters"></a>

Die Anweisung `LOAD DATA FROM S3` verwendet die folgenden erforderlichen und optionalen Parameter. Weitere Informationen zu einigen der Parameter finden Sie unter [LOAD DATA-Anweisung](https://dev.mysql.com/doc/refman/8.0/en/load-data.html) in der MySQL-Dokumentation.

**FILE \$1 PREFIX \$1 MANIFEST**  
Gibt an, ob die Daten aus einer einzelnen Datei, aus allen Dateien mit einem bestimmten Präfix oder aus allen Dateien in einem angegebenen Manifest geladen werden sollen. `FILE` ist der Standardwert.

**S3-URI**  
Gibt den URI der zu ladenden Text- oder Manifestdatei oder das zu verwendende Amazon-S3-Präfix an. Legen Sie den URI mithilfe der unter beschriebenen Syntax fes [Angeben des Pfads (URI) zu einem Amazon-S3-Bucket](#AuroraMySQL.Integrating.LoadFromS3.URI).

**REPLACE \$1 IGNORE**  
Gibt an, welche Aktion ausgeführt werden soll, falls eine Eingabezeile die gleichen eindeutigen Schlüsselwerte aufweist wie eine vorhandene Zeile in der Datenbanktabelle.  
+ Geben Sie `REPLACE` an, wenn die Eingabezeile die bestehende Zeile überschreiben soll.
+ Geben Sie `IGNORE` an, wenn die Eingabezeile verworfen werden soll.

**INTO TABLE**  
Gibt den Namen der Datenbanktabelle an, in welche die Eingabezeilen geladen werden sollen.

**PARTITION**  
Gibt vor, dass alle Eingabezeilen in die Partitionen, die in der Liste mit durch Komma getrennten Partitionsnamen angegeben sind, eingefügt werden müssen. Lässt sich eine Eingabezeile nicht in eine der angegebenen Partitionen einfügen, schlägt die Anweisung fehl und eine Fehlermeldung wird zurückgegeben.

**CHARACTER SET**  
Gibt den Zeichensatz der Daten in der Eingabedatei an.

**FIELDS \$1 COLUMNS**  
Gibt an, wie die Felder oder Spalten in der Eingabedatei getrennt werden. Für Felder wird standardmäßig ein Tabulator als Trennzeichen verwendet.

**LINES**  
Gibt an, wie die Zeilen in der Eingabedatei getrennt werden. Zeilen werden standardmäßig durch ein Zeilenumbruchzeichen (`'\n'`) getrennt.

***number*ZEILEN IGNORIEREN \$1 ZEILEN**  
Gibt an, dass eine bestimmte Anzahl an Zeilen am Anfang der Eingabedatei ignoriert werden sollen. Sie können beispielsweise mit `IGNORE 1 LINES` die erste Headerzeile mit den Spaltennamen überspringen oder mit `IGNORE 2 ROWS` die ersten beiden Datenzeilen der Eingabedatei auslassen. Wenn Sie auch `PREFIX` verwenden, überspringt `IGNORE` eine bestimmte Anzahl von Zeilen am Anfang der ersten Eingabedatei.

**col\$1name\$1or\$1user\$1var, ...**  
Gibt eine durch Komma getrennte Liste mit einem oder mehreren Spaltennamen bzw. einer oder mehreren Benutzervariablen an, die die Namen der zu ladenden Elemente identifizieren. Der Name einer Benutzervariable, der für diesen Zweck verwendet wird, muss mit dem Namen eines Elements aus der Textdatei übereinstimmen, welcher ein @ als Präfix hat. Sie können Benutzervariablen einsetzen, um die entsprechenden Feldwerte für die spätere Wiederverwendung zu speichern.  
Beispielsweise wird mit folgender Anweisung die erste Spalte aus der Eingabedatei in die erste Spalte von `table1` geladen, zudem wird der Wert der Spalte `table_column2` in `table1` auf den Eingabewert der zweiten Spalte geteilt durch 100 gesetzt.  

```
LOAD DATA FROM S3 's3://amzn-s3-demo-bucket/data.txt'
    INTO TABLE table1
    (column1, @var1)
    SET table_column2 = @var1/100;
```

**SET**  
Gibt eine durch Komma getrennte Liste mit Zuweisungsvorgängen an, die die Werte von Spalten in der Tabelle auf Werte setzen, die nicht in der Eingabedatei enthalten sind.  
Beispielsweise setzt die folgende Anweisung die ersten beiden Spalten von `table1` auf die Werte in den ersten beiden Spalten aus der Eingabedatei und anschließend den Wert von `column3` in `table1` auf den aktuellen Zeitstempel.  

```
LOAD DATA FROM S3  's3://amzn-s3-demo-bucket/data.txt'
    INTO TABLE table1
    (column1, column2)
    SET column3 = CURRENT_TIMESTAMP;
```
Auf der rechten Seite von `SET`-Zuweisungen können Sie Unterabfragen formulieren. Für eine Unterabfrage, die einen Wert zurückgibt, der einer Spalte zugewiesen werden soll, kommt ausschließlich eine skalare Unterabfrage infrage. Des Weiteren können Sie mit einer Unterabfrage keine Daten aus der zu ladenden Tabelle auswählen. 

Sie können nicht das Schlüsselwort `LOCAL` der Anweisung `LOAD DATA FROM S3` verwenden, wenn Sie Daten aus einem Amazon-S3-Bucket laden.

### Verwenden eines Manifests für zu ladende Dateien
<a name="AuroraMySQL.Integrating.LoadFromS3.Manifest"></a>

Sie können mit der Anweisung `LOAD DATA FROM S3` und dem Schlüsselwort `MANIFEST` eine Manifestdatei im JSON-Format angeben, in der die Textdateien aufgeführt sind, die in eine Tabelle im DB-Cluster geladen werden sollen.

Das folgende JSON-Schema beschreibt das Format und den Inhalt einer Manifestdatei.

```
{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "additionalProperties": false,
    "definitions": {},
    "id": "Aurora_LoadFromS3_Manifest",
    "properties": {
        "entries": {
            "additionalItems": false,
            "id": "/properties/entries",
            "items": {
                "additionalProperties": false,
                "id": "/properties/entries/items",
                "properties": {
                    "mandatory": {
                        "default": "false",
                        "id": "/properties/entries/items/properties/mandatory",
                        "type": "boolean"
                    },
                    "url": {
                        "id": "/properties/entries/items/properties/url",
                        "maxLength": 1024,
                        "minLength": 1,
                        "type": "string"
                    }
                },
                "required": [
                    "url"
                ],
                "type": "object"
            },
            "type": "array",
            "uniqueItems": true
        }
    },
    "required": [
        "entries"
    ],
    "type": "object"
}
```

Jeder `url`-Wert im Manifest muss eine URL mit dem Bucket-Namen und dem vollständigen Objektpfad zur Datei angeben (nicht nur ein Präfix). Sie können ein Manifest verwenden, um Dateien aus verschiedenen Buckets, verschiedenen Regionen oder mit unterschiedlichen Präfixen zu laden. Falls in der URL keine Region angegeben ist, wird die Region des Ziel-DB-Clusters in Aurora verwendet. Das folgende Beispiel zeigt eine Manifestdatei, mit der vier Dateien aus unterschiedlichen Buckets geladen werden.

```
{
  "entries": [
    {
      "url":"s3://aurora-bucket/2013-10-04-customerdata", 
      "mandatory":true
    },
    {
      "url":"s3-us-west-2://aurora-bucket-usw2/2013-10-05-customerdata",
      "mandatory":true
    },
    {
      "url":"s3://aurora-bucket/2013-10-04-customerdata", 
      "mandatory":false
    },
    {
      "url":"s3://aurora-bucket/2013-10-05-customerdata"
    }
  ]
}
```

Das optionale Flag `mandatory` gibt an, ob `LOAD DATA FROM S3` eine Fehlermeldung zurückgeben soll, wenn die Datei nicht gefunden wird. Das Flag `mandatory` ist standardmäßig auf `false` gesetzt. Wenn keine Dateien gefunden werden, wird `mandatory` beendet, und zwar unabhängig vom `LOAD DATA FROM S3`-Wert.

Manifestdateien können eine beliebige Erweiterung haben. Im folgenden Beispiel wird die Anweisung `LOAD DATA FROM S3` mit dem Manifest aus dem vorherigen Beispiel ausgeführt, das den Namen **customer.manifest** trägt. 

```
LOAD DATA FROM S3 MANIFEST 's3-us-west-2://aurora-bucket/customer.manifest'
    INTO TABLE CUSTOMER
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n'
    (ID, FIRSTNAME, LASTNAME, EMAIL);
```

Nachdem die Anweisung beendet ist, wird ein Eintrag für jede erfolgreich geladene Datei in die Tabelle `aurora_s3_load_history` geschrieben. 

#### Überprüfen der geladenen Dateien mit der Tabelle „aurora\$1s3\$1load\$1history“
<a name="AuroraMySQL.Integrating.LoadFromS3.Manifest.History"></a>

Mit jeder erfolgreich ausgeführten Anweisung `LOAD DATA FROM S3` wird die Tabelle `aurora_s3_load_history` im Schema `mysql` mit einem Eintrag für jede geladene Datei aktualisiert.

Nach der Ausführung der Anweisung `LOAD DATA FROM S3` können Sie überprüfen, welche Dateien geladen wurden. Dazu führen Sie eine Abfrage für die Tabelle `aurora_s3_load_history` aus. Um die Dateien anzuzeigen, die aus einer Iteration der Anweisung geladen wurden, verwenden Sie die Klausel `WHERE`, um die Datensätze auf dem Amazon S3-URI für die in der Anweisung verwendete Manifestdatei zu filtern. Wenn Sie zuvor dieselbe Manifestdatei verwendet haben, filtern Sie die Ereignisse mithilfe des Felds `timestamp`.

```
select * from mysql.aurora_s3_load_history where load_prefix = 'S3_URI';
```

In der folgenden Tabelle werden die Felder der Tabelle `aurora_s3_load_history` beschrieben.


| Feld | Beschreibung | 
| --- | --- | 
| `load_prefix` |  Der URI, der in der Load-Anweisung angegeben wurde. Dieser URI kann alle der folgenden Elemente abbilden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Integrating.LoadFromS3.html)  | 
|  `file_name`  |  Der Name der Datei, die – mithilfe des im Feld `load_prefix` angegebenen URI – aus Amazon S3 in Aurora geladen wurde.  | 
| `version_number` |  Die Versionsnummer der im Feld `file_name` bezeichneten Datei, die geladen wurde, wenn der Amazon S3-Bucket eine Versionsnummer hat.  | 
|  `bytes_loaded`  |  Die Größe der geladenen Datei in Bytes.  | 
| `load_timestamp`  |  Der Zeitstempel, zu dem die Anweisung `LOAD DATA FROM S3` abgeschlossen ist.  | 

### Beispiele
<a name="AuroraMySQL.Integrating.LoadFromS3.Text.Examples"></a>

Mit folgender Anweisung werden Daten aus einem Amazon S3-Bucket geladen, der sich in derselben Region befindet wie der Aurora-DB-Cluster. Die Anweisung liest die durch Kommata getrennten Daten der Datei `customerdata.txt` im *amzn-s3-demo-bucket* Amazon S3-Bucket und lädt dann diese Daten in die Tabelle `store-schema.customer-table`.

```
LOAD DATA FROM S3 's3://amzn-s3-demo-bucket/customerdata.csv' 
    INTO TABLE store-schema.customer-table
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n'
    (ID, FIRSTNAME, LASTNAME, ADDRESS, EMAIL, PHONE);
```

Mit folgender Anweisung werden Daten aus einem Amazon S3-Bucket geladen, der sich in einer anderen Region befindet als der Aurora-DB-Cluster. Die Anweisung liest die durch Kommata getrennten Daten aller Dateien, die mit dem Objektpräfix `employee-data` im *amzn-s3-demo-bucket* Amazon S3-Bucket in der Region `us-west-2` übereinstimmen, und lädt dann diese Daten in die Tabelle `employees`.

```
LOAD DATA FROM S3 PREFIX 's3-us-west-2://amzn-s3-demo-bucket/employee_data'
    INTO TABLE employees
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n'
    (ID, FIRSTNAME, LASTNAME, EMAIL, SALARY);
```

Mit folgender Anweisung werden Daten aus Dateien, die in einer JSON-Manifestdatei mit dem Namen "q1\$1sales.json" angegeben sind, in die Tabelle `sales` geladen. 

```
LOAD DATA FROM S3 MANIFEST 's3-us-west-2://amzn-s3-demo-bucket1/q1_sales.json'
    INTO TABLE sales
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n'
    (MONTH, STORE, GROSS, NET);
```

## LOAD XML FROM S3
<a name="AuroraMySQL.Integrating.LoadFromS3.XML"></a>

Mit der Anweisung `LOAD XML FROM S3` können Sie Daten aus XML-Dateien, die in einem Amazon S3-Bucket gespeichert sind, in drei verschiedenen XML-Formaten laden:
+ Spaltennamen als Attribute des Elements `<row>`. Der Attributwert bestimmt die Inhalte des Tabellenfeldes.

  ```
  <row column1="value1" column2="value2" .../>
  ```
+ Spaltennamen als untergeordnete Elemente des Elements `<row>`. Der Wert des untergeordneten Elements bestimmt die Inhalte des Tabellenfeldes.

  ```
  <row>
    <column1>value1</column1>
    <column2>value2</column2>
  </row>
  ```
+ Spaltennamen im Attribut `name` des Elements `<field>` im Element `<row>`. Der Wert des Elements `<field>` bestimmt die Inhalte des Tabellenfeldes. 

  ```
  <row>
    <field name='column1'>value1</field>
    <field name='column2'>value2</field>
  </row>
  ```

### Syntax
<a name="AuroraMySQL.Integrating.LoadFromS3.XML.Syntax"></a>

```
LOAD XML FROM S3 'S3-URI'
    [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [PARTITION (partition_name,...)]
    [CHARACTER SET charset_name]
    [ROWS IDENTIFIED BY '<element-name>']
    [IGNORE number {LINES | ROWS}]
    [(field_name_or_user_var,...)]
    [SET col_name = expr,...]
```

### Parameters
<a name="AuroraMySQL.Integrating.LoadFromS3.XML.Parameters"></a>

Die Anweisung `LOAD XML FROM S3` verwendet die folgenden erforderlichen und optionalen Parameter. Weitere Informationen zu einigen der Parameter finden Sie unter [LOAD XML-Anweisung](https://dev.mysql.com/doc/refman/8.0/en/load-xml.html) in der MySQL-Dokumentation.

**FILE \$1 PREFIX**  
Gibt an, ob die Daten aus einer einzelnen Datei oder aus allen Dateien mit einem bestimmten Präfix geladen werden sollen. `FILE` ist der Standardwert.

**REPLACE \$1 IGNORE**  
Gibt an, welche Aktion ausgeführt werden soll, falls eine Eingabezeile die gleichen eindeutigen Schlüsselwerte aufweist wie eine vorhandene Zeile in der Datenbanktabelle.  
+ Geben Sie `REPLACE` an, wenn die Eingabezeile die bestehende Zeile überschreiben soll.
+ Geben Sie `IGNORE` an, wenn Sie die Eingabezeile verwerfen möchten. `IGNORE` ist der Standardwert.

**INTO TABLE**  
Gibt den Namen der Datenbanktabelle an, in welche die Eingabezeilen geladen werden sollen.

**PARTITION**  
Gibt vor, dass alle Eingabezeilen in die Partitionen, die in der Liste mit durch Komma getrennten Partitionsnamen angegeben sind, eingefügt werden müssen. Lässt sich eine Eingabezeile nicht in eine der angegebenen Partitionen einfügen, schlägt die Anweisung fehl und eine Fehlermeldung wird zurückgegeben.

**CHARACTER SET**  
Gibt den Zeichensatz der Daten in der Eingabedatei an.

**ROWS IDENTIFIED BY**  
Gibt den Elementnamen an, der eine Zeile in der Eingabedatei bestimmt. Der Standardwert ist `<row>`.

***number*LINIEN IGNORIEREN \$1 ZEILEN**  
Gibt an, dass eine bestimmte Anzahl an Zeilen am Anfang der Eingabedatei ignoriert werden sollen. Sie können beispielsweise mit `IGNORE 1 LINES` die erste Zeile in der Textdatei überspringen oder mit `IGNORE 2 ROWS` die ersten beiden Datenzeilen der XML-Eingabedatei auslassen.

**field\$1name\$1or\$1user\$1var, ...**  
Gibt eine durch Komma getrennte Liste mit einem oder mehreren XML-Elementnamen bzw. einer oder mehreren Benutzervariablen an, die die Namen der zu ladenden Elemente identifizieren. Der Name einer Benutzervariable, die für diesen Zweck verwendet wird, muss mit dem Namen eines Elements aus der XML-Datei übereinstimmen, welcher ein @ als Präfix hat. Sie können Benutzervariablen einsetzen, um die entsprechenden Feldwerte für die spätere Wiederverwendung zu speichern.  
Beispielsweise wird mit folgender Anweisung die erste Spalte aus der Eingabedatei in die erste Spalte von `table1` geladen, zudem wird der Wert der Spalte `table_column2` in `table1` auf den Eingabewert der zweiten Spalte geteilt durch 100 gesetzt.  

```
LOAD XML FROM S3 's3://amzn-s3-demo-bucket/data.xml'
   INTO TABLE table1
   (column1, @var1)
   SET table_column2 = @var1/100;
```

**SET**  
Gibt eine durch Komma getrennte Liste mit Zuweisungsvorgängen an, die die Werte von Spalten in der Tabelle auf Werte setzen, die nicht in der Eingabedatei enthalten sind.  
Beispielsweise setzt die folgende Anweisung die ersten beiden Spalten von `table1` auf die Werte in den ersten beiden Spalten aus der Eingabedatei und anschließend den Wert von `column3` in `table1` auf den aktuellen Zeitstempel.  

```
LOAD XML FROM S3 's3://amzn-s3-demo-bucket/data.xml'
   INTO TABLE table1
   (column1, column2)
   SET column3 = CURRENT_TIMESTAMP;
```
Auf der rechten Seite von `SET`-Zuweisungen können Sie Unterabfragen formulieren. Für eine Unterabfrage, die einen Wert zurückgibt, der einer Spalte zugewiesen werden soll, kommt ausschließlich eine skalare Unterabfrage infrage. Darüber hinaus können Sie mit einer Unterabfrage keine Daten aus der zu ladenden Tabelle auswählen.