

# CTAS と INSERT INTO を使用して Amazon Ion テーブルを作成する
<a name="ion-serde-using-ctas-and-insert-into-to-create-ion-tables"></a>

Athena では、`CREATE TABLE AS SELECT` (CTAS) と `INSERT INTO` ステートメントを使用して、テーブルのデータを Amazon Ion 形式で新しいテーブルにコピーまたは挿入できます。

CTAS クエリでは、次の例のように、`WITH` 句に `format='ION'` を指定します。

```
CREATE TABLE new_table
WITH (format='ION')
AS SELECT * from existing_table
```

デフォルトでは、Athena は Amazon Ion の結果を [Ion バイナリ形式](https://amzn.github.io/ion-docs/docs/binary.html)でシリアル化しますが、テキスト形式を使用することもできます。テキスト形式を使用するには、次の例のように、CTAS `WITH` 句に `ion_encoding = 'TEXT'` を指定します。

```
CREATE TABLE new_table
WITH (format='ION', ion_encoding = 'TEXT')
AS SELECT * from existing_table
```

CTAS `WITH` 句の Amazon Ion 固有のプロパティの詳細については、「[CTAS WITH 句の Amazon Ion プロパティ](#ion-serde-ctas-with-clause-properties)」を参照してください。

## CTAS WITH 句の Amazon Ion プロパティ
<a name="ion-serde-ctas-with-clause-properties"></a>

CTAS クエリで `WITH` 句を使用すると、Amazon Ion 形式を指定できるほか、必要に応じて Amazon Ion エンコードを指定したり、使用する圧縮アルゴリズムを記述したりできます。

**format**  
CTAS クエリの `WITH` 句では、形式オプションとして `ION` キーワードを指定できます。このようにしてテーブルを作成すると、`IonInputFormat` に指定した形式でデータが読み取られ、`IonOutputFormat` に指定した形式でデータがシリアル化されます。  
次の例では、CTAS クエリで Amazon Ion 形式を使用するように指定しています。  

```
WITH (format='ION')
```

**ion\$1encoding**  
オプションです。  
デフォルト: `BINARY`  
値: `BINARY`、`TEXT`  
Amazon Ion バイナリ形式と Amazon Ion テキスト形式のどちらでデータをシリアル化するかを指定します。次の例では、Amazon Ion テキスト形式を指定しています。  

```
WITH (format='ION', ion_encoding='TEXT')
```

**write\$1compression**  
オプションです。  
デフォルト: `GZIP`  
値: `GZIP`、`ZSTD`、`BZIP2`、`SNAPPY`、`NONE`  
出力ファイルの圧縮に使用する圧縮アルゴリズムを指定します。  
次の例では、[Zstandard](https://facebook.github.io/zstd/) 圧縮アルゴリズムを使用して CTAS クエリの出力を Amazon Ion 形式で生成するように指定しています。  

```
WITH (format='ION', write_compression = 'ZSTD')       
```
Athena での圧縮の使用の詳細については、「[Athena で圧縮を使用する](compression-formats.md)」を参照してください。

Athena のその他の CTAS プロパティについては、「[CTAS テーブルのプロパティ](create-table-as.md#ctas-table-properties)」を参照してください。