

# Amazon RDS の Amazon S3 バケットにエクスポートする際のデータ変換
<a name="USER_ExportSnapshot.data-types"></a>

DB スナップショットを Amazon S3 バケットにエクスポートすると、Amazon RDS はデータを Parquet 形式に変換してエクスポートし、保存します。Parquet の詳細については、[Apache Parquet](https://parquet.apache.org/docs/) のウェブサイトを参照してください。

Parquet は、すべてのデータを次のプリミティブ型の 1 つとして格納します。
+ BOOLEAN
+ INT32
+ INT64
+ INT96
+ FLOAT
+ DOUBLE
+ BYTE\$1ARRAY - バイナリとも呼ばれる可変長のバイト配列
+ FIXED\$1LEN\$1BYTE\$1ARRAY - 値が一定のサイズを持つ場合に使用される固定長のバイト配列

Parquet のデータ型はほとんど存在せず、この形式の読み書きに伴う複雑さが軽減されるようになっています。Parquet は、プリミティブ型を拡張するための論理的な型を提供します。*論理的な型*は、`LogicalType` メタデータフィールドにデータを持つ注釈として実装されます。論理的な型の注釈は、プリミティブ型の解釈方法を示します。

`STRING` 論理的な型が `BYTE_ARRAY` 型に注釈を付けた場合は、このバイト配列を UTF-8 でエンコードされた文字列として解釈する必要があることを示します。エクスポートタスクが完了すると、Amazon RDS は文字列変換が発生したかどうかを通知します。エクスポートされた基になるデータは、常に送信元データと同じです。ただし、UTF-8 のエンコーディングに伴う差異により、Athena などのツールで読み取ると、一部の文字はソースと異なるように表示される場合があります。

詳細については、Parquet ドキュメントの「[Parquet Logical Type Definitions](https://github.com/apache/parquet-format/blob/master/LogicalTypes.md)」を参照してください。

**Topics**
+ [MySQL およびMariaDB データ型の Parquet へのマッピング](#USER_ExportSnapshot.data-types.MySQL)
+ [PostgreSQL データ型の Parquet へのマッピング](#USER_ExportSnapshot.data-types.PostgreSQL)

## MySQL およびMariaDB データ型の Parquet へのマッピング
<a name="USER_ExportSnapshot.data-types.MySQL"></a>

次の表は、データが変換されて Amazon S3 にエクスポートされる際の MySQL および MariaDB データ型から Parquet データ型へのマッピングを示しています。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_ExportSnapshot.data-types.html)

## PostgreSQL データ型の Parquet へのマッピング
<a name="USER_ExportSnapshot.data-types.PostgreSQL"></a>

次の表は、データが変換されて Amazon S3 にエクスポートされる際の PostgreSQL データ型から Parquet データ型へのマッピングを示しています。


| PostgreSQL のデータ型 | Parquet プリミティブ型 | 論理的な型の注釈 | マッピングに関するメモ | 
| --- | --- | --- | --- | 
| 数値データ型 | 
| BIGINT | INT64 |  |   | 
| BIGSERIAL | INT64 |  |   | 
| DECIMAL | BYTE\$1ARRAY | STRING | DECIMAL 型は BYTE\$1ARRAY 型の文字列に変換され、UTF8 としてエンコードされます。この変換は、データ精度や、数値ではないデータ値 (NaN) に伴う複雑さを回避するためのものです。 | 
| DOUBLE PRECISION | DOUBLE |  |   | 
| INTEGER | INT32 |  |   | 
| MONEY | BYTE\$1ARRAY | STRING |   | 
| REAL | FLOAT |  |   | 
| SERIAL | INT32 |  |   | 
| SMALLINT | INT32 | INT(16, true) |   | 
| SMALLSERIAL | INT32 | INT(16, true) |   | 
| 文字列および関連データ型 | 
| ARRAY | BYTE\$1ARRAY | STRING |  配列は文字列に変換され、BINARY (UTF8) としてエンコードされます。 この変換は、データ精度、数値ではないデータ値 (NaN)、および時間データ値に伴う複雑さを回避するためのものです。  | 
| BIT | BYTE\$1ARRAY | STRING |   | 
| BIT VARYING | BYTE\$1ARRAY | STRING |   | 
| BYTEA | BINARY |  |   | 
| CHAR | BYTE\$1ARRAY | STRING |   | 
| CHAR(N) | BYTE\$1ARRAY | STRING |   | 
| ENUM | BYTE\$1ARRAY | STRING |   | 
| NAME | BYTE\$1ARRAY | STRING |   | 
| TEXT | BYTE\$1ARRAY | STRING |   | 
| TEXT SEARCH | BYTE\$1ARRAY | STRING |   | 
| VARCHAR(N) | BYTE\$1ARRAY | STRING |   | 
| XML | BYTE\$1ARRAY | STRING |   | 
| 日付と時刻のデータ型 | 
| DATE | BYTE\$1ARRAY | STRING |   | 
| INTERVAL | BYTE\$1ARRAY | STRING |   | 
| TIME | BYTE\$1ARRAY | STRING |  | 
| TIME WITH TIME ZONE | BYTE\$1ARRAY | STRING |  | 
| TIMESTAMP | BYTE\$1ARRAY | STRING |  | 
| TIMESTAMP WITH TIME ZONE | BYTE\$1ARRAY | STRING |  | 
| ジオメトリデータ型 | 
| BOX | BYTE\$1ARRAY | STRING |   | 
| CIRCLE | BYTE\$1ARRAY | STRING |   | 
| LINE | BYTE\$1ARRAY | STRING |   | 
| LINESEGMENT | BYTE\$1ARRAY | STRING |   | 
| PATH | BYTE\$1ARRAY | STRING |   | 
| POINT | BYTE\$1ARRAY | STRING |   | 
| POLYGON | BYTE\$1ARRAY | STRING |   | 
| JSON データ型 | 
| JSON | BYTE\$1ARRAY | STRING |   | 
| JSONB | BYTE\$1ARRAY | STRING |   | 
| その他のデータ型 | 
| BOOLEAN | BOOLEAN |  |   | 
| CIDR | BYTE\$1ARRAY | STRING |  ネットワークデータ型 | 
| COMPOSITE | BYTE\$1ARRAY | STRING |   | 
| DOMAIN | BYTE\$1ARRAY | STRING |   | 
| INET | BYTE\$1ARRAY | STRING |  ネットワークデータ型 | 
| MACADDR | BYTE\$1ARRAY | STRING |   | 
| OBJECT IDENTIFIER | 該当なし |  |  | 
| PG\$1LSN | BYTE\$1ARRAY | STRING |   | 
| RANGE | BYTE\$1ARRAY | STRING |   | 
| UUID | BYTE\$1ARRAY | STRING |   | 