全部產品
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內建函數對照表。