全部產品
Search
文件中心

MaxCompute:與Hive、MySQL、Oracle及Hologres的資料類型映射

更新時間:Jun 05, 2025

在進行MaxCompute資料移轉或整合操作時,您需要參照資料類型映射表,設定表欄位的資料類型映射關係,以確保資料在不同資料庫中能夠正確地儲存、處理和查詢,避免資料丟失或損壞,並且提高工作效率。本文介紹MaxCompute與Hive、Oracle、MySQL及Hologres之間資料類型的映射關係。

與Hive、MySQL、Oracle資料類型映射

MaxCompute與Hive、Oracle、MySQL的資料類型映射表,如下所示。

MaxCompute資料類型

Hive資料類型

Oracle資料類型

MySQL資料類型

BOOLEAN

BOOLEAN

說明

Oracle自23C版本開始支援BOOLEAN資料類型。

說明

使用過程用TINYINT(1)替代。

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)

  • DECIMAL

  • NUMERIC

STRING

STRING

  • VARCHAR

  • VARCHAR2

  • CHAR

  • NCHAR

  • NVARCHAR3

  • VARCHAR

  • CHAR

VARCHAR

VARCHAR

  • VARCHAR

  • VARCHAR2

  • CHAR

  • NCHAR

  • NVARCHAR3

VARCHAR

STRING

CHAR

CHAR

CHAR

BINARY

BINARY

RAW

  • BINARY

  • VARBINARY

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

MAP<key,value>

不支援

不支援

STRUCT

STRUCT

不支援

不支援

不支援

UNION

不支援

不支援

不支援

不支援

BLOB

BLOB

與Hologres的資料類型映射

建立Hologres外部表格時,MaxCompute與Hologres的資料類型映射如下表所示。

MaxCompute資料類型

Hologres資料類型

支援映射的版本

說明

  • STRING

  • VARCHAR

TEXT

Hologres所有版本

BIGINT

INT8

Hologres所有版本

INT

  • INT4

  • INT

Hologres所有版本

FLOAT

  • FLOAT4

  • REAL

Hologres所有版本

DOUBLE

  • FLOAT

  • FLOAT8

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新增

  • MaxCompute的TIMESTAMP取值範圍為0000-01-01 00:00:00.000000000~9999-12-31 23:59:59.999999999,精確到納秒。

  • Hologres支援的TIMESTAMPTZ精確到毫秒。

    Hologres內部已做精度轉換,在讀取過程中會自動處理成毫秒。

CHAR(n)

預設為CHAR(n)。

Hologres也支援映射MaxCompute的CHAR(n)為TEXT類型。您需要設定參數set hg_enable_convert_type_for_foreign_table = true,並在建表時將欄位類型修改為TEXT。

Hologres 0.8新增

MaxCompute的CHAR(n)為固定長度字元類型,n為長度。最大取值為255。長度不足則使用空格填充。

VARCHAR(n)

預設為VARCHAR(n)。

Hologres也支援映射MaxCompute的VARCHAR(n)為TEXT類型。您需要設定參數set hg_enable_convert_type_for_foreign_table = true,並在建表時將欄位類型修改為TEXT。

Hologres 0.8新增

MaxCompute的VARCHAR(n)為變長字元類型,n為長度。取值範圍為1~65535。

DATE

DATE

Hologres 0.8新增

SMALLINT

預設為INT2。

Hologres也支援映射MaxCompute的SMALLINT為INT8類型。您需要設定參數set hg_enable_convert_type_for_foreign_table = true,並在建表時將欄位類型修改為INT8。

Hologres所有版本(0.8版本為 int4, 0.9版本為int2)

TINYINT

預設為INT2。

Hologres也支援映射MaxCompute的TINYINT為INT8類型。您需要設定參數set hg_enable_convert_type_for_foreign_table = true,並在建表時將欄位類型修改為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內建函數對照表