在進行MaxCompute資料移轉或整合操作時,您需要參照資料類型映射表,設定表欄位的資料類型映射關係,以確保資料在不同資料庫中能夠正確地儲存、處理和查詢,避免資料丟失或損壞,並且提高工作效率。本文介紹MaxCompute與Hive、Oracle、MySQL及Hologres之間資料類型的映射關係。
與Hive、MySQL、Oracle資料類型映射
MaxCompute與Hive、Oracle、MySQL的資料類型映射表,如下所示。
MaxCompute資料類型 | Hive資料類型 | Oracle資料類型 | MySQL資料類型 |
BOOLEAN | BOOLEAN | 無 說明 Oracle自23C版本開始支援BOOLEAN資料類型。 | 無 說明 使用過程用 |
TINYINT | TINYINT | NUMBER(3,0) | TINYINT |
SMALLINT | SMALLINT | NUMBER(5,0) | SMALLINT |
INT | INT | NUMBER(7,0) | MEDIUMINT |
INT | INT | NUMBER(10,0) | INT |
BIGINT | BIGINT | NUMBER(20,0) | BIGINT |
FLOAT | FLOAT | BINARY_FLOAT 說明 Oracle自10g開始有此類型。 | FLOAT |
DOUBLE | DOUBLE | BINARY_DOUBLE 說明 Oracle自10g開始有此類型。 | DOUBLE |
DECIMAL | DECIMAL | NUMBER(P,S) |
|
STRING | STRING |
|
|
VARCHAR | VARCHAR |
| VARCHAR |
STRING | CHAR | CHAR | CHAR |
BINARY | BINARY | RAW |
|
TIMESTAMP | TIMESTAMP | TIMESTAMP WITH TIME ZONE | TIMESTAMP |
TIMESTAMP_NTZ | TIMESTAMP 說明 自Hive 3版本開始支援此類型。 | DATETIME | TIMESTAMP |
DATE | DATE | DATE | DATE |
DATETIME | DATE | DATE | DATETIME |
ARRAY | ARRAY | 不支援 | 不支援 |
MAP |
| 不支援 | 不支援 |
STRUCT | STRUCT | 不支援 | 不支援 |
不支援 | UNION | 不支援 | 不支援 |
不支援 | 不支援 | BLOB | BLOB |
與Hologres的資料類型映射
建立Hologres外部表格時,MaxCompute與Hologres的資料類型映射如下表所示。
MaxCompute資料類型 | Hologres資料類型 | 支援映射的版本 | 說明 |
| TEXT | Hologres所有版本 | 無 |
BIGINT | INT8 | Hologres所有版本 | 無 |
INT |
| Hologres所有版本 | 無 |
FLOAT |
| Hologres所有版本 | 無 |
DOUBLE |
| Hologres所有版本 | 無 |
BOOLEAN | BOOL | Hologres所有版本 | 無 |
DATETIME | TIMESTAMP WITH TIME ZONE | Hologres所有版本 | MaxCompute的DATETIME是日期時間類型,使用東八區時間作為系統標準時間。範圍從0000年1月1日到9999年12月31日,精確到毫秒 。 |
DECIMAL | NUMERIC | Hologres所有版本 | MaxCompute的DECIMAL如果未指定精度,則預設為(38,18),使用IMPORT FOREIGN SCHEMA建立表時系統會自動轉換精度。 |
TIMESTAMP | TIMESTAMP WITH TIME ZONE | Hologres 0.8新增 |
|
CHAR(n) | 預設為CHAR(n)。 Hologres也支援映射MaxCompute的CHAR(n)為TEXT類型。您需要設定參數 | Hologres 0.8新增 | MaxCompute的CHAR(n)為固定長度字元類型,n為長度。最大取值為255。長度不足則使用空格填充。 |
VARCHAR(n) | 預設為VARCHAR(n)。 Hologres也支援映射MaxCompute的VARCHAR(n)為TEXT類型。您需要設定參數 | Hologres 0.8新增 | MaxCompute的VARCHAR(n)為變長字元類型,n為長度。取值範圍為1~65535。 |
DATE | DATE | Hologres 0.8新增 | 無 |
SMALLINT | 預設為INT2。 Hologres也支援映射MaxCompute的SMALLINT為INT8類型。您需要設定參數 | Hologres所有版本(0.8版本為 int4, 0.9版本為int2) | 無 |
TINYINT | 預設為INT2。 Hologres也支援映射MaxCompute的TINYINT為INT8類型。您需要設定參數 | Hologres所有版本(0.8版本為 int4, 0.9版本為int2) | 無 |
CHAR | 不支援 | 不支援 | 無 |
ARRAY<INT> | INT4[] | Hologres 0.8新增 | 無 |
ARRAY<BIGINT> | INT8[] | Hologres 0.8新增 | 無 |
ARRAY<FLOAT> | FLOAT4[] | Hologres 0.8新增 | 無 |
ARRAY<DOUBLE> | FLOAT8[] | Hologres 0.8新增 | 無 |
ARRAY<BOOLEAN> | BOOLEAN[] | Hologres 0.8新增 | 無 |
ARRAY<STRING> | TEXT[] | Hologres 0.8新增 | 無 |
BINARY | BYTEA | Hologres 0.9新增 | 無 |
ARRAY<TINYINT> | 不支援 | 不支援 | 無 |
ARRAY<SMALLINT> | 不支援 | 不支援 | 無 |
當MaxCompute資料表中含有Hologres不支援的類型欄位時,如果Hologres不訪問該欄位,則可以正常查詢所支援的類型欄位。
相關文檔
MaxCompute與Hive、MySQL、Oracle內建函數對照表,請參見與Hive、MySQL、Oracle內建函數對照表。