在进行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内建函数对照表。