本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
匯出至 Amazon S3 儲存貯體時的資料轉換 RDS
當您將資料庫快照匯出至 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
我的SQL 和 MariaDB 資料類型映射到 Parquet
下表顯示轉換資料並匯出至 Amazon S3 時,從 MySQL 和 MariaDB 資料類型映射到 Parquet 資料類型。
來源資料類型 | Parquet 基本類型 | 邏輯類型標註 | 轉換備註 |
---|---|---|---|
數值資料類型 | |||
BIGINT | INT64 | ||
BIGINT UNSIGNED | FIXED_LENBYTE_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 精確度。十進位值會轉換為 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 精確度。此數值會轉換為 BYTE_ARRAY 類型的字串,並編碼為 UTF8。 | |
SMALLINT | INT32 | ||
SMALLINT UNSIGNED | INT32 | ||
TINYINT | INT32 | ||
TINYINT UNSIGNED | INT32 | ||
字串資料類型 | |||
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 | |
SMALLSERIAL | INT32 | INT_16 | |
字串和相關資料類型 | |||
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 |