与Hive、MySQL、Oracle及Hologres的数据类型映射

在进行MaxCompute数据迁移或集成操作时,您需要参照数据类型映射表,设置表字段的数据类型映射关系,以确保数据在不同数据库中能够正确地存储、处理和查询,避免数据丢失或损坏,并且提高工作效率。本文介绍MaxComputeHive、Oracle、MySQLHologres之间数据类型的映射关系。

Hive、MySQL、Oracle数据类型映射

MaxComputeHive、Oracle、MySQL的数据类型映射表,如下所示。

MaxCompute数据类型

Hive数据类型

Oracle数据类型

MySQL数据类型

BOOLEAN

BOOLEAN

说明

Oracle23C版本开始支持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

说明

Oracle10g开始有此类型。

FLOAT

DOUBLE

DOUBLE

BINARY_DOUBLE

说明

Oracle10g开始有此类型。

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外部表时,MaxComputeHologres的数据类型映射如下表所示。

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所有版本

MaxComputeDATETIME是日期时间类型,使用东八区时间作为系统标准时间。范围从000011日到99991231日,精确到毫秒 。

DECIMAL

NUMERIC

Hologres所有版本

MaxComputeDECIMAL如果未指定精度,则默认为(38,18),使用IMPORT FOREIGN SCHEMA创建表时系统会自动转换精度。

TIMESTAMP

TIMESTAMP WITH TIME ZONE

Hologres 0.8新增

  • MaxComputeTIMESTAMP取值范围为0000-01-01 00:00:00.000000000~9999-12-31 23:59:59.999999999,精确到纳秒。

  • Hologres支持的TIMESTAMPTZ精确到毫秒。

    Hologres内部已做精度转换,在读取过程中会自动处理成毫秒。

CHAR(n)

默认为CHAR(n)。

Hologres也支持映射MaxComputeCHAR(n)为TEXT类型。您需要设置参数set hg_enable_convert_type_for_foreign_table = true,并在建表时将字段类型修改为TEXT。

Hologres 0.8新增

MaxComputeCHAR(n)为固定长度字符类型,n为长度。最大取值为255。长度不足则使用空格填充。

VARCHAR(n)

默认为VARCHAR(n)。

Hologres也支持映射MaxComputeVARCHAR(n)为TEXT类型。您需要设置参数set hg_enable_convert_type_for_foreign_table = true,并在建表时将字段类型修改为TEXT。

Hologres 0.8新增

MaxComputeVARCHAR(n)为变长字符类型,n为长度。取值范围为1~65535。

DATE

DATE

Hologres 0.8新增

SMALLINT

默认为INT2。

Hologres也支持映射MaxComputeSMALLINTINT8类型。您需要设置参数set hg_enable_convert_type_for_foreign_table = true,并在建表时将字段类型修改为INT8。

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

TINYINT

默认为INT2。

Hologres也支持映射MaxComputeTINYINTINT8类型。您需要设置参数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不访问该字段,则可以正常查询所支持的类型字段。

相关文档

MaxComputeHive、MySQL、Oracle内建函数对照表,请参见Hive、MySQL、Oracle内建函数对照表