

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.

# CREATE TABLE
<a name="create-table"></a>

Erstellt eine Tabelle mit dem Namen und den Parametern, den bzw. die Sie angeben. 

**Anmerkung**  
Diese Seite enthält zusammenfassende Referenzinformationen. Weitere Informationen zum Erstellen von Tabellen in Athena und ein Beispiel für eine `CREATE TABLE`-Anweisung finden Sie unter [Erstellen von Tabellen in Athena](creating-tables.md). Für ein Beispiel für das Erstellen einer Datenbank, das Erstellen einer Tabelle und das Ausführen einer `SELECT`-Abfrage auf dem Tisch in Athena siehe [Erste Schritte](getting-started.md).

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

```
CREATE EXTERNAL TABLE [IF NOT EXISTS]
 [db_name.]table_name [(col_name data_type [COMMENT col_comment] [, ...] )]
 [COMMENT table_comment]
 [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
 [CLUSTERED BY (col_name, col_name, ...) INTO num_buckets BUCKETS]
 [ROW FORMAT row_format]
 [STORED AS file_format] 
 [WITH SERDEPROPERTIES (...)]
 [LOCATION 's3://amzn-s3-demo-bucket/[folder]/']
 [TBLPROPERTIES ( ['has_encrypted_data'='true | false',] ['encryption_option'='SSE_S3 | SSE_KMS | CSE_KMS',] ['kms_key'='aws_kms_key_arn',] ['classification'='aws_glue_classification',] property_name=property_value [, ...] ) ]
```

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

**EXTERNAL**  
Gibt an, dass die Tabelle auf einer Datendatei basiert, die in Amazon S3 an dem von Ihnen angegebenen `LOCATION` vorhanden ist. Verwenden Sie außer beim Erstellen von [Iceberg](querying-iceberg-creating-tables.md)-Tabellen immer das `EXTERNAL`-Schlüsselwort. Wenn Sie `CREATE TABLE` ohne das `EXTERNAL`-Schlüsselwort für Nicht-Iceberg-Tabellen verwenden, gibt Athena einen Fehler aus. Wenn Sie eine externe Tabelle erstellen, müssen die referenzierten Daten mit dem Standardformat oder dem Format übereinstimmen, das Sie über die Klauseln `ROW FORMAT`, `STORED AS` und `WITH SERDEPROPERTIES` festlegen.

**[IF NOT EXISTS]**  
Dieser Parameter prüft, ob bereits eine Tabelle mit demselben Namen vorhanden ist. Ist dies der Fall, gibt der Parameter `TRUE` zurück und Amazon Athena bricht die `CREATE TABLE`-Aktion ab. Da die Stornierung erfolgt, bevor Athena den Datenkatalog aufruft, wird kein AWS CloudTrail Ereignis ausgegeben.

**[db\$1name.]table\$1name**  
Gibt einen Namen für die zu erstellende Tabelle an. Der optionale Parameter `db_name` gibt die Datenbank an, in der die Tabelle gespeichert ist. Ist nichts angegeben, wird von der aktuellen Datenbank ausgegangen. Schließen Sie `table_name` in Anführungszeichen ein, wenn der Tabellenname Zahlen enthält, zum Beispiel `"table123"`. Wenn `table_name` mit einem Unterstrich beginnt, verwenden Sie Backticks, beispielsweise ``_mytable``. Sonderzeichen (außer Unterstriche) werden nicht unterstützt.  
Bei Athena-Tabellennamen wird die Groß-/Kleinschreibung berücksichtigt. Wenn Sie mit Apache Spark arbeiten, beachten Sie, dass Spark Tabellennamen in Kleinbuchstaben erfordert. Einschränkungen für Tabellennamen in Athena finden Sie unter [Namen für Datenbanken, Tabellen und Spalten](tables-databases-columns-names.md).

**[ ( col\$1name data\$1type [COMMENT col\$1comment] [, ...] ) ]**  
Gibt den Datentyp und den Namen jeder zu erstellenden Spalten an. Spaltennamen lassen außer Unterstrichen `(_)` keine Sonderzeichen zu. Falls `col_name` mit einem Unterstrich beginnt, schließen Sie den Spaltennamen in Backticks ein, beispielsweise ``_mycolumn``. Einschränkungen für Spaltennamen in Athena finden Sie unter [Namen für Datenbanken, Tabellen und Spalten](tables-databases-columns-names.md).  
Beim Wert `data_type` kann es sich um den folgenden Typ handeln:  
+ `boolean` – Die Werte sind `true` und `false`.
+ `tinyint` – Eine 8-Bit signierte Ganzzahl im Zweierkomplement-Format mit einem Mindestwert von -2^7 und einem Höchstwert von 2^7-1.
+ `smallint` – Eine 16-Bit signierte Ganzzahl im Zweierkomplement-Format mit einem Mindestwert von -2^15 und einem Höchstwert von 2^15-1.
+ `int` – Benutzen Sie in DDL-Abfragen (Data Definition Language) wie `CREATE TABLE` das `int`-Schlüsselwort, um eine Ganzzahl darzustellen. Verwenden Sie in anderen Abfragen das Schlüsselwort `integer`, wobei `integer` als 32-Bit-Wert mit Vorzeichen im Zweierkomplementformat mit einem Mindestwert von -2^31 und einem Höchstwert von 2^31-1 dargestellt wird. Im JDBC-Treiber wird `integer` zurückgegeben, um Kompatibilität mit den geschäftlichen Analyseanwendungen zu gewährleisten.
+ `bigint` – Eine 64-Bit signierte Ganzzahl im Zweierkomplement-Format mit einem Mindestwert von -2^63 und einem Höchstwert von 2^63-1.
+ `double` – Eine signierte 64-Bit-Gleitkommazahl mit doppelter Genauigkeit. Der Bereich liegt zwischen 4,94065645841246544e-324d bis 1,79769313486231570e\$1308d, positiv oder negativ. `double` folgt dem IEEE-Standard für Gleitkommaarithmetik (IEEE 754).
+ `float` – Eine signierte 32-Bit-Gleitkommazahl mit einfacher Genauigkeit. Der Bereich liegt zwischen 1,40129846432481707e-45 bis 3,40282346638528860e\$138, positiv oder negativ. `float` folgt dem IEEE-Standard für Gleitkommaarithmetik (IEEE 754). Entspricht dem `real` in Presto. Verwenden Sie in Athena `float` in DDL-Anweisungen wie `CREATE TABLE` und `real` in SQL-Funktionen wie `SELECT CAST`. Der AWS Glue Crawler gibt Werte in zurück`float`, und Athena übersetzt `real` und `float` tippt intern (siehe [5. Juni 2018](release-notes.md#release-note-2018-06-05) Versionshinweise).
+ `decimal [ (precision, scale) ]`, wobei `precision` die Gesamtanzahl der Stellen und `scale` (optional) die Anzahl der Nachkommastellen ist. Der Standardwert ist 0. Verwenden Sie z. B. diese Definitionen: `decimal(11,5)`, `decimal(15)`. Der Höchstwert für *precision* ist 38 und der Höchstwert für *scale* ist 38.

  Um Dezimalwerte als Literale anzugeben, z. B. bei der Auswahl von Zeilen mit einem bestimmten Dezimalwert im DDL-Ausdruck einer Abfrage, legen Sie als Typdefinition `decimal` fest und listen Sie die Dezimalwerte als Literalwert (in einfachen Anführungszeichen) in Ihrer Abfrage auf, wie in diesem Beispiel: `decimal_value = decimal '0.12'`.
+ `char` – Zeichendaten mit fester Länge, die zwischen 1 und 255 Zeichen liegen muss, z. B `char(10)`. Weitere Informationen finden Sie unter [CHAR-Hive-Datentyp](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types#LanguageManualTypes-char).
+ `varchar` – Zeichendaten mit variabler Länge, die zwischen 1 und 65535 Zeichen liegen muss, z. B `varchar(10)`. Weitere Informationen finden Sie unter [VARCHAR-Hive-Datentyp](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types#LanguageManualTypes-varchar). 
+ `string` – Ein Zeichenfolgenliteral, das in einfache oder doppelte Anführungszeichen eingeschlossen ist.
**Anmerkung**  
Nicht-Zeichenfolgen-Datentypen können nicht zu `string` in Athena umgewandelt werden. Wandeln Sie sie stattdessen zu `varchar` um.
+ `binary` – (für Daten in Parquet)
+ `date` – Ein Datum im ISO-Format, z. B. `YYYY-MM-DD`. Beispiel, `date '2008-09-15'`. Eine Ausnahme bildet das Open CSVSer De, das die Anzahl der Tage verwendet, die seit dem 1. Januar 1970 vergangen sind. Weitere Informationen finden Sie unter [CSV SerDe für die Verarbeitung von CSV öffnen](csv-serde.md).
+ `timestamp`– Datum und Uhrzeit in einem [https://docs.oracle.com/javase/8/docs/api/java/sql/Timestamp.html](https://docs.oracle.com/javase/8/docs/api/java/sql/Timestamp.html)-kompatiblen Format bis zu einer maximalen Auflösung von Millisekunden, wie `yyyy-MM-dd HH:mm:ss[.f...]`. Beispiel, `timestamp '2008-09-15 03:04:05.324'`. Eine Ausnahme ist Open CSVSer De, bei dem `TIMESTAMP` Daten im numerischen UNIX-Format verwendet werden (z. B.`1579059880000`). Weitere Informationen finden Sie unter [CSV SerDe für die Verarbeitung von CSV öffnen](csv-serde.md).
+ `array` < data\$1type >
+ `map` < primitive\$1type, data\$1type >
+ `struct` < col\$1name : data\$1type [COMMENT col\$1comment] [, ...] >

**[COMMENT table\$1comment]**  
Erstellt die Tabelleneigenschaft `comment` und füllt diese mit dem von Ihnen angegebenen `table_comment`.

**[PARTITIONED BY (col\$1name data\$1type [ COMMENT col\$1comment ], ... ) ]**  
Erstellt eine partitionierte Tabelle mit einer oder mehreren Partitionsspalten, bei denen `col_name`, `data_type` und `col_comment` angegeben sind. Eine Tabelle kann eine oder mehrere Partitionen umfassen. Diese bestehen aus einem eindeutigen Spaltennamen und einer Wertekombination. Für jede angegebene Kombination wird ein eigenes Datenverzeichnis erstellt. Dies kann die Abfrageleistung in einigen Fällen verbessern. In den Tabellendaten selbst sind keine partitionierten Spalten vorhanden. Wenn Sie einen Wert für `col_name` verwenden, der mit einer Tabellenspalte identisch ist, erhalten Sie einen Fehler. Weitere Informationen finden Sie auf der Seite zum [Partitionieren von Daten](partitions.md).  
Nach dem Erstellen einer Tabelle mit Partitionen führen Sie eine weitere Abfrage aus, die aus der Klausel [MSCK REPAIR TABLE](msck-repair-table.md) besteht, um die Partitionsmetadaten aufzufrischen, beispielsweise `MSCK REPAIR TABLE cloudfront_logs;`. Verwenden Sie für Partitionen, die nicht Hive-kompatibel sind, [ALTER TABLE ADD PARTITION](alter-table-add-partition.md) zum Laden von Partitionen, sodass Sie die Daten abfragen können.

**[CLUSTERED BY (col\$1name, col\$1name, ...) INTO num\$1buckets BUCKETS]**  
Unterteilt die Daten in den angegebenen `col_name`-Spalten mit oder ohne Partitionierung in Datenteilmengen, die als *Buckets* bezeichnet werden. Der `num_buckets`-Parameter gibt die Anzahl der zu erstellenden Buckets an. Bucketing kann die Leistung einiger Abfragen auf großen Datensätzen verbessern.

**[ROW FORMAT row\$1format]**  
Gibt das Zeilenformat der Tabelle und deren zugrunde liegenden Quelldaten an, wenn zutreffend. Für `row_format` können Sie mit der Klausel `DELIMITED` ein oder mehrere Trennzeichen angeben, oder alternativ die Klausel `SERDE` verwenden, wie unten beschrieben. Wenn `ROW FORMAT` es weggelassen oder angegeben `ROW FORMAT DELIMITED` ist, wird ein SerDe systemeigener Wert verwendet.  
+ [DELIMITED FIELDS TERMINATED BY char [ESCAPED BY char]]
+ [DELIMITED COLLECTION ITEMS TERMINATED BY char]
+ [MAP KEYS TERMINATED BY char]
+ [LINES TERMINATED BY char]
+ [NULL DEFINED AS char]

  Nur mit Hive 0.13 verfügbar und wenn das STORED AS-Dateiformat `TEXTFILE` ist.
 **--ODER--**   
+ SERDE 'serde\$1name' [WITH SERDEPROPERTIES ("property\$1name" = "property\$1value", "property\$1name" = "property\$1value" [, ...] )]

  Das `serde_name` gibt an SerDe , dass es verwendet werden soll. Die `WITH SERDEPROPERTIES` Klausel ermöglicht es Ihnen, eine oder mehrere benutzerdefinierte Eigenschaften anzugeben, die gemäß der zulässig sind SerDe.

**[STORED AS Dateiformat]**  
Gibt das Dateiformat für Tabellendaten an. Wenn nichts angegeben ist, wird standardmäßig `TEXTFILE` verwendet. Optionen für `file_format` sind:  
+ SEQUENCEFILE
+ TEXTFILE
+ RCFILE
+ ORC
+ PARQUET
+ AVRO
+ ION
+ INPUTFORMAT input\$1format\$1classname OUTPUTFORMAT output\$1format\$1classname

**[LOCATION 's3://amzn-s3-demo-bucket/[folder]/']**  
Gibt den Speicherort der zugrunde liegenden Daten in Amazon S3 an, aus denen die Tabelle erstellt wurde. Der Speicherpfad muss ein Bucket-Name oder ein Bucket-Name sowie ein oder mehrere Ordner sein. Wenn Sie Partitionen verwenden, geben Sie den Stamm der partitionierten Daten an. Weitere Informationen zum Speicherort der Tabelle finden Sie unter [Tabellenspeicherort in Amazon S3 angeben](tables-location-format.md). Weitere Informationen zum Datenformat und zu den Berechtigungen finden Sie unter [Überlegungen hinsichtlich Amazon S3](creating-tables.md#s3-considerations).   
Verwenden Sie einen abschließenden Schrägstrich für Ihren Ordner oder Bucket. Verwenden Sie keine Dateinamen oder glob-Zeichen.  
 **Verwenden**:  
`s3://amzn-s3-demo-bucket/`  
`s3://amzn-s3-demo-bucket/folder/`  
`s3://amzn-s3-demo-bucket/folder/anotherfolder/`  
 **Verwenden Sie nicht:**  
`s3://amzn-s3-demo-bucket`  
`s3://amzn-s3-demo-bucket/*`  
`s3://amzn-s3-demo-bucket/mydatafile.dat`

**[TBLPROPERTIES (['has\$1encrypted\$1data'='true \$1 false',] ['encryption\$1option' = 'SSE\$1S3 \$1 SSE\$1KMS \$1 CSE\$1KMS',] ['kms\$1key'='aws\$1kms\$1key\$1arn',] ['classification'='classification\$1value',] property\$1name=property\$1value [,...])]**  
Gibt zusätzlich zu den vordefinierten Tabelleneigenschaften wie `"comment"` benutzerdefinierte Schlüssel/Wert-Paare in Form von Metadaten für die Tabellendefinition an.  
**has\$1encrypted\$1data** – Athena verfügt über eine integrierte Eigenschaft, `has_encrypted_data`. Setzen Sie diese Eigenschaft auf, `true` um anzugeben, dass die von angegebene zugrunde liegende Datenmenge CSE-KMS-verschlüsselt `LOCATION` ist. Wenn dies ausgelassen wird und die Einstellungen der Arbeitsgruppe clientseitige Einstellungen nicht überschreiben, wird `false` angenommen. Wenn nichts angegeben oder die Eigenschaft auf `false` gesetzt ist, schlägt die Abfrage fehl, wenn die zugrunde liegenden Daten verschlüsselt sind. Weitere Informationen finden Sie unter [Verschlüsselung im Ruhezustand](encryption.md).  
**encryption\$1option** — Setzen Sie diese Eigenschaft entweder auf, oder `SSE_S3``CSE_KMS`, um die höchste Verschlüsselungsstufe anzugeben`SSE_KMS`, die in der zugrunde liegenden Datenmenge verwendet wird, die von angegeben ist. `LOCATION` Weitere Informationen finden Sie unter [Verschlüsselung im Ruhezustand](encryption.md).  
**kms\$1key** — Setzen Sie diese Eigenschaft auf den AWS-KMS-Schlüssel-ARN, der zum Verschlüsseln und Entschlüsseln von Tabellendatendateien verwendet wird. Athena verwendet diesen Schlüssel, um Tabellendatendateien beim Schreiben mit `SSE_KMS` oder `CSE_KMS` Verschlüsselung zu verschlüsseln und um mit CSE-KMS verschlüsselte Tabellendatendateien zu entschlüsseln. Diese Eigenschaft ist nur erforderlich, wenn sie `encryption_option` auf oder gesetzt ist. `SSE_KMS` `CSE_KMS` Weitere Informationen finden Sie unter [Verschlüsselung im Ruhezustand](encryption.md).  
**Klassifizierung** — Tabellen, die für Athena in der CloudTrail Konsole erstellt wurden, werden `cloudtrail` als Wert für die `classification` Eigenschaft hinzugefügt. Um ETL-Jobs auszuführen, AWS Glue müssen Sie eine Tabelle mit der `classification` Eigenschaft erstellen, den Datentyp für AWS Glue as`csv`,, `parquet` `orc``avro`, oder `json` anzugeben. Beispiel, `'classification'='csv'`. ETL-Aufträge schlagen fehl, wenn Sie diese Eigenschaft nicht festlegen. Sie können diese nachträglich über AWS Glue -Konsole, die API oder die CLI angeben. Weitere Informationen finden Sie unter [Tabellen für ETL-Aufträge erstellen](schema-classifier.md) und [Authoring Jobs in AWS Glue](https://docs.aws.amazon.com/glue/latest/dg/author-job.html) im *AWS Glue Developer Guide*.  
**compression\$1level** – Die Eigenschaft `compression_level` gibt die zu verwendende Komprimierungsstufe an. Diese Eigenschaft gilt nur für die ZSTD-Komprimierung. Mögliche Werte liegen zwischen 1 und 22. Der Standardwert ist 3. Weitere Informationen finden Sie unter [ZSTD-Komprimierungsstufen verwenden](compression-support-zstd-levels.md).  
Weitere Informationen zu anderen Tabelleneigenschaften finden Sie unter [ALTER TABLE SET TBLPROPERTIES](alter-table-set-tblproperties.md).

## Beispiele
<a name="create-table-examples"></a>

Die folgende `CREATE TABLE`-Beispielanweisung erstellt eine Tabelle, die auf tabulatorgetrennten Planetendaten basiert, die in Amazon S3 gespeichert sind. 

```
CREATE EXTERNAL TABLE planet_data (
  planet_name string,
  order_from_sun int,
  au_to_sun float,
  mass float,
  gravity_earth float,
  orbit_years float,
  day_length float
  )
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
LOCATION 's3://amzn-s3-demo-bucket/tsv/'
```

Beachten Sie folgende Punkte:
+ Die `ROW FORMAT DELIMITED`-Klausel gibt an, dass die Daten durch ein bestimmtes Zeichen getrennt sind.
+ Die `FIELDS TERMINATED BY '\t'`-Klausel gibt an, dass die Felder in den TSV-Daten durch das Tabulatorzeichen ('\$1 t') getrennt sind.
+ Die `STORED AS TEXTFILE`-Klausel gibt an, dass die Daten als reine Textdateien in Amazon S3 gespeichert werden.

Um die Daten abzufragen, könnten Sie eine einfache `SELECT`-Anweisung wie die folgende verwenden:

```
SELECT * FROM planet_data
```

Um das Beispiel zum Erstellen Ihrer eigenen TSV-Tabelle in Athena zu verwenden, ersetzen Sie die Tabellen- und Spaltennamen durch die Namen und Datentypen Ihrer eigenen Tabelle und Spalten und aktualisieren Sie die `LOCATION`-Klausel so, dass sie auf den Amazon S3-Pfad verweist, in dem Ihre TSV-Dateien gespeichert sind.

Weitere Informationen zum Erstellen von Tabellen finden Sie unter [Erstellen von Tabellen in Athena](creating-tables.md).