本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
匯出至 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 |