本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon RDS 匯出至 Amazon S3 儲存貯體時的資料轉換
當您將資料庫快照匯出至 Amazon S3 儲存貯體時,Amazon RDS 會以 Parquet 格式轉換資料、匯出資料,以及存放資料。如需 Parquet 的詳細資訊,請參閱 Apache Parquet
Parquet 會將所有資料以下列其中一種基本類型存放:
-
BOOLEAN
-
INT32
-
INT64
-
INT96
-
FLOAT
-
DOUBLE
-
BYTE_ARRAY – 長度可變的位元組陣列,也稱為二進位
-
FIXED_LEN_BYTE_ARRAY – 長度固定的位元組陣列,用於值具備固定大小時
Parquet 的資料類型相當少,可減少讀取和寫入格式的複雜性。Parquet 提供擴充基本類型的邏輯類型。「邏輯類型」會實作為標註,並將資料存放在 LogicalType 中繼資料欄位中。邏輯類型標註會說明如何解譯基本類型。
當 STRING 邏輯類型標註 BYTE_ARRAY 類型時,會指出位元組陣列應解譯為 UTF-8 編碼的字元字串。在匯出任務完成後,Amazon RDS 會通知您是否發生任何字串轉換。匯出的基礎資料一律與來源資料相同。但是,由於 UTF-8 中的編碼存在差異,在 Athena 等工具中讀取時,有些字元的顯示方式可能會和來源中的顯示方式不同。
如需詳細資訊,請參閱 Parquet 文件中的 Parquet Logical Type Definitions
MySQL 和 MariaDB 資料類型對 Parquet 的映射
下表顯示轉換資料並匯出至 Amazon S3 時,MySQL 和 MariaDB 資料類型到 Parquet 資料類型的映射。
| 來源資料類型 | Parquet 基本類型 | 邏輯類型標註 | 轉換備註 |
|---|---|---|---|
| 數值資料類型 | |||
| BIGINT | INT64 | ||
| BIGINT UNSIGNED | FIXED_LEN_BYTE_ARRAY(9) | DECIMAL(20,0) | Parquet 只支援帶正負號的類型,因此映射需要額外的位元組 (8 加 1) 來存放 BIGINT_UNSIGNED 類型。 |
| BIT | BYTE_ARRAY | ||
| DECIMAL | INT32 | DECIMAL(p,s) | 如果來源值小於 231,則會以 INT32 存放。 |
| INT64 | DECIMAL(p,s) | 如果來源值等於或大於 231,但小於 263,則會以 INT64 存放。 | |
| FIXED_LEN_BYTE_ARRAY(N) | DECIMAL(p,s) | 如果來源值等於或大於 263,則會以 FIXED_LEN_BYTE_ARRAY(N) 存放。 | |
| BYTE_ARRAY | STRING | Parquet 不支援大於 38 的 Decimal 精確度。Decimal 值會轉換成 BYTE_ARRAY 類型中的字串,並以 UTF8 編碼。 | |
| DOUBLE | DOUBLE | ||
| FLOAT | DOUBLE | ||
| INT | INT32 | ||
| INT UNSIGNED | INT64 | ||
| MEDIUMINT | INT32 | ||
| MEDIUMINT UNSIGNED | INT64 | ||
| NUMERIC | INT32 | DECIMAL(p,s) |
如果來源值小於 231,則會以 INT32 存放。 |
| INT64 | DECIMAL(p,s) | 如果來源值等於或大於 231,但小於 263,則會以 INT64 存放。 | |
| FIXED_LEN_ARRAY(N) | DECIMAL(p,s) | 如果來源值等於或大於 263,則會以 FIXED_LEN_BYTE_ARRAY(N) 存放。 | |
| BYTE_ARRAY | STRING | Parquet 不支援大於 38 的 Numeric 精確度。這個 Numeric 值會轉換成 BYTE_ARRAY 類型中的字串,並以 UTF8 編碼。 | |
| SMALLINT | INT32 | ||
| SMALLINT UNSIGNED | INT32 | ||
| TINYINT | INT32 | ||
| TINYINT UNSIGNED | INT32 | INT(16, true) | |
| 字串資料類型 | |||
| BINARY | BYTE_ARRAY | ||
| BLOB | BYTE_ARRAY | ||
| CHAR | BYTE_ARRAY | ||
| ENUM | BYTE_ARRAY | STRING | |
| LINESTRING | BYTE_ARRAY | ||
| LONGBLOB | BYTE_ARRAY | ||
| LONGTEXT | BYTE_ARRAY | STRING | |
| MEDIUMBLOB | BYTE_ARRAY | ||
| MEDIUMTEXT | BYTE_ARRAY | STRING | |
| MULTILINESTRING | BYTE_ARRAY | ||
| SET | BYTE_ARRAY | STRING | |
| TEXT | BYTE_ARRAY | STRING | |
| TINYBLOB | BYTE_ARRAY | ||
| TINYTEXT | BYTE_ARRAY | STRING | |
| VARBINARY | BYTE_ARRAY | ||
| VARCHAR | BYTE_ARRAY | STRING | |
| 日期和時間資料類型 | |||
| DATE | BYTE_ARRAY | STRING | 日期會轉換成 BYTE_ARRAY 類型中的字串,並以 UTF8 編碼。 |
| DATETIME | INT64 | TIMESTAMP_MICROS | |
| TIME | BYTE_ARRAY | STRING | TIME 類型會轉換成 BYTE_ARRAY 類型中的字串,並以 UTF8 編碼。 |
| TIMESTAMP | INT64 | TIMESTAMP_MICROS | |
| YEAR | INT32 | ||
| 幾何資料類型 | |||
| GEOMETRY | BYTE_ARRAY | ||
| GEOMETRYCOLLECTION | BYTE_ARRAY | ||
| MULTIPOINT | BYTE_ARRAY | ||
| MULTIPOLYGON | BYTE_ARRAY | ||
| POINT | BYTE_ARRAY | ||
| POLYGON | BYTE_ARRAY | ||
| JSON 資料類型 | |||
| JSON | BYTE_ARRAY | STRING | |
PostgreSQL 資料類型對 Parquet 的映射
下表顯示轉換資料並匯出至 Amazon S3 時,PostgreSQL 資料類型到 Parquet 資料類型的映射。
| PostgreSQL 資料類型 | Parquet 基本類型 | 邏輯類型標註 | 映射備註 |
|---|---|---|---|
| 數值資料類型 | |||
| BIGINT | INT64 | ||
| BIGSERIAL | INT64 | ||
| DECIMAL | BYTE_ARRAY | STRING | DECIMAL 類型會轉換成 BYTE_ARRAY 類型中的字串,並以 UTF8 編碼。 此轉換是為了避免因非數字 (NaN) 而導致的資料精確度和資料值複雜性。 |
| DOUBLE PRECISION | DOUBLE | ||
| INTEGER | INT32 | ||
| MONEY | BYTE_ARRAY | STRING | |
| REAL | FLOAT | ||
| SERIAL | INT32 | ||
| SMALLINT | INT32 | INT(16, true) | |
| SMALLSERIAL | INT32 | INT(16, true) | |
| 字串和相關資料類型 | |||
| ARRAY | BYTE_ARRAY | STRING |
陣列會轉換成字串,並以 BINARY (UTF8) 編碼。 此轉換是為了避免因非數字 (NaN) 和時間資料值而導致的資料精確度複雜性。 |
| BIT | BYTE_ARRAY | STRING | |
| BIT VARYING | BYTE_ARRAY | STRING | |
| BYTEA | BINARY | ||
| CHAR | BYTE_ARRAY | STRING | |
| CHAR(N) | BYTE_ARRAY | STRING | |
| ENUM | BYTE_ARRAY | STRING | |
| NAME | BYTE_ARRAY | STRING | |
| TEXT | BYTE_ARRAY | STRING | |
| TEXT SEARCH | BYTE_ARRAY | STRING | |
| VARCHAR(N) | BYTE_ARRAY | STRING | |
| XML | BYTE_ARRAY | STRING | |
| 日期和時間資料類型 | |||
| DATE | BYTE_ARRAY | STRING | |
| INTERVAL | BYTE_ARRAY | STRING | |
| TIME | BYTE_ARRAY | STRING | |
| TIME WITH TIME ZONE | BYTE_ARRAY | STRING | |
| TIMESTAMP | BYTE_ARRAY | STRING | |
| TIMESTAMP WITH TIME ZONE | BYTE_ARRAY | STRING | |
| 幾何資料類型 | |||
| BOX | BYTE_ARRAY | STRING | |
| CIRCLE | BYTE_ARRAY | STRING | |
| LINE | BYTE_ARRAY | STRING | |
| LINESEGMENT | BYTE_ARRAY | STRING | |
| PATH | BYTE_ARRAY | STRING | |
| POINT | BYTE_ARRAY | STRING | |
| POLYGON | BYTE_ARRAY | STRING | |
| JSON 資料類型 | |||
| JSON | BYTE_ARRAY | STRING | |
| JSONB | BYTE_ARRAY | STRING | |
| 其他資料類型 | |||
| BOOLEAN | BOOLEAN | ||
| CIDR | BYTE_ARRAY | STRING | 網路資料類型 |
| COMPOSITE | BYTE_ARRAY | STRING | |
| DOMAIN | BYTE_ARRAY | STRING | |
| INET | BYTE_ARRAY | STRING | 網路資料類型 |
| MACADDR | BYTE_ARRAY | STRING | |
| OBJECT IDENTIFIER | N/A | ||
| PG_LSN | BYTE_ARRAY | STRING | |
| RANGE | BYTE_ARRAY | STRING | |
| UUID | BYTE_ARRAY | STRING | |