匯出至 Amazon S3 儲存貯體時的資料轉換 RDS - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

匯出至 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