

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.

# Arbeiten Sie mit CSV-Daten in AWS Glue
<a name="schema-csv"></a>

Auf dieser Seite wird beschrieben, wie Sie AWS Glue Schemas aus CSV-Dateien erstellen, deren Datenwerte für jede Spalte in Anführungszeichen gesetzt sind, oder aus CSV-Dateien, die Header-Werte enthalten.

## Umgang mit CSV-Daten in Anführungszeichen
<a name="schema-csv-quotes"></a>

Angenommen, eine CSV-Datei enthält Datenfelder, die in doppelte Anführungszeichen gesetzt sind, wie im folgenden Beispiel.

```
"John","Doe","123-555-1231","John said \"hello\""
"Jane","Doe","123-555-9876","Jane said \"hello\""
```

Um in Athena eine Abfrage für eine Tabelle auszuführen, die aus einer CSV-Datei mit Werten in Anführungszeichen erstellt wurde, müssen Sie die Tabelleneigenschaften ändern, AWS Glue um Open CSVSer De zu verwenden. Weitere Hinweise zu OpenCSV SerDe finden Sie unter. [CSV SerDe für die Verarbeitung von CSV öffnen](csv-serde.md)

**Um Tabelleneigenschaften in der Konsole zu bearbeiten AWS Glue**

1. Wählen Sie im Navigationsbereich der AWS Glue Konsole die Option **Tabellen** aus.

1. Wählen Sie den Link für die Tabelle, die Sie bearbeiten möchten. Wählen Sie dann **Action** (Aktion), **Edit table** (Tabelle bearbeiten).

1. Auf der Seite **Edit table** (Tabelle bearbeiten) nehmen Sie die folgenden Änderungen vor:
   + Geben Sie für **Serialization lib** (Serialisierungsbibliothek) `org.apache.hadoop.hive.serde2.OpenCSVSerde` ein.
   + Geben Sie für **Serde-Parameter** die folgenden Werte für die Schlüssel `escapeChar`, `quoteChar` und `separatorChar` ein: 
     + Geben Sie für `escapeChar` einen umgekehrten Schrägstrich (**\\**) ein.
     + Geben Sie für `quoteChar` ein doppeltes Anführungszeichen (**"**) ein.
     + Geben Sie für `separatorChar` ein Komma (**,**) ein.

1. Wählen Sie **Speichern**.

Weitere Informationen finden Sie unter [Anzeigen und Bearbeiten von Tabellendetails](https://docs.aws.amazon.com/glue/latest/dg/console-tables.html#console-tables-details) im *AWS Glue -Entwicklerhandbuch*.

Sie können die AWS Glue Tabelleneigenschaften auch programmgesteuert aktualisieren. Verwenden Sie die AWS Glue [UpdateTable](https://docs.aws.amazon.com/glue/latest/webapi/API_UpdateTable.html)API-Operation oder den AWS CLI Befehl [update-table](https://docs.aws.amazon.com/cli/latest/reference/glue/update-table.html), um den `SerDeInfo` Block in der Tabellendefinition zu ändern, wie im folgenden JSON-Beispiel.

```
"SerDeInfo": {
   "name": "",
   "serializationLib": "org.apache.hadoop.hive.serde2.OpenCSVSerde",
   "parameters": {
      "separatorChar": ","
      "quoteChar": "\""
      "escapeChar": "\\"
      }
},
```

## Umgang mit CSV-Dateien mit Kopfzeilen
<a name="schema-csv-headers"></a>

Wenn Sie eine Tabelle in Athena mit einer `CREATE TABLE`-Anweisung definieren, können Sie die Tabelleneigenschaft `skip.header.line.count` verwenden, um Header in Ihren CSV-Daten zu ignorieren, wie im folgenden Beispiel.

```
...
STORED AS TEXTFILE
LOCATION 's3://amzn-s3-demo-bucket/{{csvdata_folder}}/';
TBLPROPERTIES ("skip.header.line.count"="1")
```

Alternativ können Sie die CSV-Überschriften vorher entfernen, damit diese Informationen nicht in den Abfrageergebnissen von Athena enthalten sind. Hierfür können Sie beispielsweise AWS Glue -Aufträge zum Extrahieren, Umwandeln und Laden (Extract, Transform, Load; ETL) verwenden. Sie können Skripten in AWS Glue einer Sprache schreiben, die eine Erweiterung des PySpark Python-Dialekts ist. Weitere Informationen finden Sie unter [Authoring Jobs in AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/author-job-glue.html) im *AWS Glue Developer Guide*.

Das folgende Beispiel zeigt eine Funktion in einem AWS Glue Skript, die einen dynamischen Frame ausgibt und die `writeHeader` Formatoption auf False setzt, wodurch die Header-Informationen entfernt werden: `from_options`

```
glueContext.write_dynamic_frame.from_options(frame = applymapping1, connection_type = "s3", connection_options = {"path": "s3://amzn-s3-demo-bucket/MYTABLEDATA/"}, format = "csv", format_options = {"writeHeader": False}, transformation_ctx = "datasink2")
```