

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.

# ALTER TABLE ADD PARTITION
<a name="alter-table-add-partition"></a>

Erstellt eine oder mehrere Partitionsspalten für die Tabelle. Jede Partition besteht aus einer oder mehreren unterschiedlichen name/value Spaltenkombinationen. Für jede angegebene Kombination wird ein eigenes Datenverzeichnis erstellt. Dies kann die Abfrageleistung in einigen Fällen verbessern. Partitionierte Spalten sind nicht in den Tabellendaten selbst vorhanden. Falls Sie also einen Spaltennamen angeben, der mit einer Spalte in der Tabelle übereinstimmt, wird ein Fehler ausgegeben. Weitere Informationen finden Sie unter [Ihre Daten partitionieren](partitions.md).

In Athena müssen eine Tabelle und ihre Partitionen die gleichen Datenformate verwenden, ihre Schemata können aber unterschiedlich sein. Weitere Informationen finden Sie unter [Tabellen mit Partitionen aktualisieren](updates-and-partitions.md).

Informationen zu den Berechtigungen auf Ressourcenebene, die in IAM-Richtlinien (einschließlich `glue:CreatePartition`) erforderlich sind, finden Sie unter [AWS Glue -API-Berechtigungen: Referenz zu Aktionen und Ressourcen](https://docs.aws.amazon.com/glue/latest/dg/api-permissions-reference.html) und [Konfigurieren Sie den Zugriff auf Datenbanken und Tabellen in der AWS Glue Data Catalog](fine-grained-access-to-glue-resources.md). Informationen zur Fehlerbehebung bei Berechtigungen bei der Verwendung von Athena finden Sie im Abschnitt [Berechtigungen](troubleshooting-athena.md#troubleshooting-athena-permissions) des Themas [Beheben von Problemen in Athena](troubleshooting-athena.md).

## Syntax
<a name="synopsis"></a>

```
ALTER TABLE table_name ADD [IF NOT EXISTS]
  PARTITION
  (partition_col1_name = partition_col1_value
  [,partition_col2_name = partition_col2_value]
  [,...])
  [LOCATION 'location1']
  [PARTITION
  (partition_colA_name = partition_colA_value
  [,partition_colB_name = partition_colB_value
  [,...])]
  [LOCATION 'location2']
  [,...]
```

## Parameters
<a name="parameters"></a>

Wenn Sie eine Partition hinzufügen, geben Sie ein oder mehrere name/value Spaltenpaare für die Partition und den Amazon S3 S3-Pfad an, in dem sich die Datendateien für diese Partition befinden.

**[IF NOT EXISTS]**  
Führt in dem Fall, dass bereits eine Partition mit derselben Definition vorhanden ist, zu einer Fehlerunterdrückung.

**PARTITION (partition\$1col\$1name = partition\$1col\$1value [,...])**  
Erstellt eine Partition mit den von Ihnen angegebenen name/value Spaltenkombinationen. Binden Sie `partition_col_value` nur als Zeichenfolgenzeichen ein, wenn der Datentyp der Spalte eine Zeichenfolge ist.

**[LOCATION 'location']**  
Gibt das Verzeichnis an, in dem die in der vorherigen Anweisung definierten Partitionen gespeichert werden. Die `LOCATION`-Klausel ist optional, wenn die Daten Partitionierung (`pk1=v1/pk2=v2/pk3=v3`) im Hive-Stil verwenden. Bei der Partitionierung im Hive-Stil wird der vollständige Amazon-S3-URI automatisch aus dem Speicherort der Tabelle, den Partitionsschlüsselnamen und den Partitionsschlüsselwerten erstellt. Weitere Informationen finden Sie unter [Ihre Daten partitionieren](partitions.md).

## Überlegungen
<a name="alter-table-add-partition-considerations"></a>

Amazon Athena legt kein bestimmtes Begrenzung für die Anzahl der Partitionen fest, die Sie in einer einzelnen `ALTER TABLE ADD PARTITION`-DDL-Anweisung hinzufügen können. Wenn Sie jedoch eine beträchtliche Anzahl von Partitionen hinzufügen müssen, sollten Sie erwägen, den Vorgang in kleinere Stapel aufzuteilen, um potenzielle Leistungsprobleme zu vermeiden. Das folgende Beispiel verwendet aufeinanderfolgende Befehle, um Partitionen einzeln hinzuzufügen, und verwendet `IF NOT EXISTS`, um das Hinzufügen von Duplikaten zu vermeiden.

```
ALTER TABLE table_name ADD IF NOT EXISTS PARTITION (ds='2023-01-01')
ALTER TABLE table_name ADD IF NOT EXISTS PARTITION (ds='2023-01-02')
ALTER TABLE table_name ADD IF NOT EXISTS PARTITION (ds='2023-01-03')
```

 Beachten Sie bei der Arbeit mit Partitionen in Athena auch die folgenden Punkte:
+ Athena unterstützt zwar das Abfragen von AWS Glue Tabellen mit 10 Millionen Partitionen, Athena kann jedoch nicht mehr als 1 Million Partitionen in einem einzigen Scan lesen.
+ Um Ihre Abfragen zu optimieren und die Anzahl der gescannten Partitionen zu reduzieren, sollten Sie Strategien wie das Bereinigen von Partitionen oder die Verwendung von Partitionsindizes in Betracht ziehen.

Weitere Überlegungen zur Arbeit mit Partitionen in Athena finden Sie unter [Ihre Daten partitionieren](partitions.md). 

## Beispiele
<a name="examples"></a>

Das folgende Beispiel fügt einer Tabelle für partitionierte Daten im Hive-Stil eine einzelne Partition hinzu.

```
ALTER TABLE orders ADD
  PARTITION (dt = '2016-05-14', country = 'IN');
```

Das folgende Beispiel fügt einer Tabelle für partitionierte Daten im Hive-Stil mehrere Partitionen hinzu.

```
ALTER TABLE orders ADD
  PARTITION (dt = '2016-05-31', country = 'IN')
  PARTITION (dt = '2016-06-01', country = 'IN');
```

Wenn die Tabelle nicht für partitionierte Daten im Hive-Stil bestimmt ist, ist die `LOCATION`-Klausel erforderlich und sollte der vollständige Amazon-S3-URI für das Präfix sein, das die Daten der Partition enthält.

```
ALTER TABLE orders ADD
  PARTITION (dt = '2016-05-31', country = 'IN') LOCATION 's3://amzn-s3-demo-bucket/path/to/INDIA_31_May_2016/'
  PARTITION (dt = '2016-06-01', country = 'IN') LOCATION 's3://amzn-s3-demo-bucket/path/to/INDIA_01_June_2016/';
```

Um Fehler zu ignorieren, wenn die Partition bereits existiert, verwenden Sie die `IF NOT EXISTS`-Klausel, wie folgt.

```
ALTER TABLE orders ADD IF NOT EXISTS
  PARTITION (dt = '2016-05-14', country = 'IN');
```

## Null Byte `_$folder$`-Datei
<a name="alter-table-add-partition-zero-byte-folder-files"></a>

Wenn du eine `ALTER TABLE ADD PARTITION`-Anweisung ausführst und fälschlicherweise eine Partition angibts, die bereits vorhanden ist, und einen falschen Ort für Simple Storage Service (Amazon S3), Null-Byte-Platzhalterdateien des Formats `partition_value_$folder$` werden in Simple Storage Service (Amazon S3) erstellt. Sie müssen diese Dateien manuell entfernen.

Um dies zu verhindern, verwenden Sie die `ADD IF NOT EXISTS`-Syntax in Ihrer `ALTER TABLE ADD PARTITION`-Anweisung wie folgt.

```
ALTER TABLE table_name ADD IF NOT EXISTS PARTITION […]
```