

# 创建 Amazon Ion 表
<a name="ion-serde-using-create-table"></a>

要使用以 Amazon Ion 格式存储的数据创建 Athena 表，您可以在 CREATE TABLE 语句中使用以下方法之一：
+ 指定 `STORED AS ION`。在此用法中，您无需明确指定 Amazon Ion Hive SerDe。这是一种更直接的选择。
+ 在 `ROW FORMAT SERDE`、`INPUTFORMAT` 和 `OUTPUTFORMAT` 字段中指定 Amazon Ion 类路径。

您还可以使用 `CREATE TABLE AS SELECT`（CTAS）语句在 Athena 中创建 Amazon Ion 表。有关信息，请参阅[使用 CTAS 和 INSERT INTO 创建 Amazon Ion 表](ion-serde-using-ctas-and-insert-into-to-create-ion-tables.md)。

## 指定 STORED AS ION
<a name="ion-serde-specifying-stored-as-ion"></a>

以下示例 `CREATE TABLE` 语句在 `LOCATION` 子句之前使用 `STORED AS ION` 创建基于 Amazon Ion 格式的航班数据的表。`LOCATION` 子句指定了 Ion 格式的输入文件所在的存储桶或文件夹。扫描指定位置的所有文件。

```
CREATE EXTERNAL TABLE flights_ion (
    yr INT,
    quarter INT,
    month INT,
    dayofmonth INT,
    dayofweek INT,
    flightdate STRING,
    uniquecarrier STRING,
    airlineid INT,
)
STORED AS ION
LOCATION 's3://amzn-s3-demo-bucket/'
```

## 指定 Amazon Ion 类路径
<a name="ion-serde-specifying-the-ion-class-paths"></a>

您可以不使用 `STORED AS ION` 语法，而是明确指定 `ROW FORMAT SERDE`、`INPUTFORMAT` 和 `OUTPUTFORMAT` 子句的 Ion 类路径值，如下所示。


****  

| 参数 | Ion 类路径 | 
| --- | --- | 
| ROW FORMAT SERDE | 'com.amazon.ionhiveserde.IonHiveSerDe' | 
| STORED AS INPUTFORMAT | 'com.amazon.ionhiveserde.formats.IonInputFormat' | 
| OUTPUTFORMAT | 'com.amazon.ionhiveserde.formats.IonOutputFormat' | 

以下的 DDL 查询使用此方法创建与前面示例中相同的外部表。

```
CREATE EXTERNAL TABLE flights_ion (
    yr INT,
    quarter INT,
    month INT,
    dayofmonth INT,
    dayofweek INT,
    flightdate STRING,
    uniquecarrier STRING,
    airlineid INT,
)
ROW FORMAT SERDE
 'com.amazon.ionhiveserde.IonHiveSerDe'
STORED AS INPUTFORMAT
 'com.amazon.ionhiveserde.formats.IonInputFormat'
OUTPUTFORMAT
 'com.amazon.ionhiveserde.formats.IonOutputFormat'
LOCATION 's3://amzn-s3-demo-bucket/'
```

有关的 Athena 中 `CREATE TABLE` 语句的 SerDe 属性信息，请参阅 [Amazon Ion SerDe 属性参考](ion-serde-using-ion-serde-properties.md)。