首批通过分布式安全可靠测评,为关键业务系统打造
数据类型映射
更新时间:2026-02-25 18:34:50
数据类型映射确保在数据从 OceanBase 数据库导出为 Parquet、ORC、MaxCompute(ODPS) 和 CSV 格式时,能够准确地将原始数据与目标格式的数据类型进行对应。OceanBase 数据库通过明确的映射表,将 MySQL 和 Oracle 的各类数据类型与 Parquet、ORC 和 MaxCompute(ODPS) 支持的数据类型进行关联,从而确保数据在导出过程中不丢失、不过载,并保持其语义不变。
说明
其中 CSV 文件导出后为字符串类型。
导出为 Parquet 格式
| Parquet 物理类型 | Parquet 逻辑类型 | Hive 数据类型 | MySQL 租户下数据类型 | 备注 |
|---|---|---|---|---|
| INT32 | INT(8,TRUE) | TINYINT | TINYINT | |
| INT32 | INT(16,TRUE) | SMALLINT | SMALLINT | |
| INT32 | INT(32,TRUE) | INT | INT | |
| INT64 | INT(64,TRUE) | BIGINT | BIGINT | |
| INT32 | INT(8,FALSE) | TINYINT(超限为 NULL) | TINYINT UNSIGNED | |
| INT32 | INT(16,FALSE) | SMALLINT(超限为 NULL) | SMALLINT UNSIGNED | |
| INT32 | INT(32,FALSE) | INT(超限为 NULL) | INT UNSIGNED | |
| INT64 | INT(64,FALSE) | BIGINT(超限为 NULL) | BIGINT UNSIGNED | |
| FLOAT | NONE | FLOAT | FLOAT | |
| DOUBLE | NONE | DOUBLE | DOUBLE | |
| FIXED_LEN_BYTE_ARRAY | DECIMAL | DECIMAL | DECIMAL, DECIMAL UNSIGNED | 必须指定 precision 和 scale |
| BYTE_ARRAY | STRING | CHAR | CHAR, BINARY | Parquet 的 string 类型都是 utf8 编码 |
| BYTE_ARRAY | STRING | VARCHAR | VARCHAR, VARBINARY | |
| BYTE_ARRAY | STRING | STRING | TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT, TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB | |
| INT64 | TIMESTAMP(is_adjusted_to_utc=true, parquet::LogicalType::TimeUnit::MICROS) | TIMESTAMP | TIMESTAMP | |
| INT64 | TIMESTAMP(is_adjusted_to_utc=false, parquet::LogicalType::TimeUnit::MICROS) | TIMESTAMP | DATETIME | |
| INT32 | DATE | DATE | DATE | |
| INT64 | TIME | \ | TIME | |
| INT32 | INT(8,FALSE) | \ | YEAR |
导出为 ORC 格式
| ORC 类型 | Hive数据类型 | MySQL 租户下数据类型 |
|---|---|---|
| BYTE | TINYINT | TINYINT |
| SHORT | SMALLINT | SMALLINT |
| INT | INT | INT |
| LONG | BIGINT | BIGINT |
| FLOAT | FLOAT | FLOAT |
| DOUBLE | DOUBLE | DOUBLE |
| DECIMAL | DECIMAL | DECIMAL |
| CHAR | CHAR | CHAR |
| VARCHAR | VARCHAR | VARCHAR |
| STRING | STRING | TINYTEXT/TEXT/MEDIUMTEXT/LONGTEXT |
| BINARY | BINARY | TINYBLOB/BLOB/MEDIUMBLOB/LONGBLOB/BINARY/VARBINARY |
| DATE | DATE | DATE |
| TIMESTAMP | TIMESTAMP | DATETIME/TIMESTAMP |
导出为 MaxCompute(ODPS) 格式
| MaxCompute(ODPS) 数据类型 | MySQL 租户下数据类型 | 备注 |
|---|---|---|
| BOOLEAN | TINYINT (0值表示错误,1值表示正确) | |
| TINYINT | TINYINT | |
| SMALLINT | SMALLINT | |
| INT | INT | |
| BIGINT | BIGINT | |
| FLOAT | FLOAT | 不允许用户指定精度,否则报错。 |
| DOUBLE | DOUBLE | 不允许用户指定精度,否则报错。 |
| DECIMAL | DECIMAL(M,D) | 用户需要显式指定 M 和 D 和 MaxCompute(ODPS) 上的 P/S 一致,否则执行期会报错。 |
| CHAR (最大长度 255 字节,不足补空格) | CHAR (长度 0~255) | 用户指定的 length 需要大于或者等于 MaxCompute(ODPS) 上的对应列的 length,否则执行期会报错。 |
| VARCHAR(最大长度65535) | VARCHAR (长度可以指定为 0 到 262144 之间) | 用户指定的 length 需要大于或者等于 MaxCompute(ODPS) 上的对应列的 length,否则执行期会报错。 |
| STRING(长度限制 8MB 字节) | VARCHAR/TINYTEXT/TEXT/MEDIUMTEXT/LONGTEXT(MEDIUMTEXT 是最大长度为 16,777,215 个字节的 TEXT 类型,带字符集) | 用户需要知道 MaxCompute(ODPS) 上 STRING 数据的最大长度,根据此信息决定映射为什么类型,如果 OceanBase 数据库的类型长度不足以容纳 MaxCompute(ODPS) 数据,会在执行期报错。 |
| BINARY (长度限制 8MB) | VARBINARY/TINYBLOB/BLOB/MEDIUMBLOB/LONGBLOB(BLOB 值被视为二进制字符串(字节字符串),具有二进制字符集和排序规则,比较和排序需要基于列值中字节的数值,MEDIUMBLOB是最大长度为 16,777,215 字节的 BLOB 类型) | 用户需要知道 MaxCompute(ODPS) 上 BINARY 数据的最大长度,根据此信息决定映射为什么类型,如果 OceanBase 数据库的类型长度不足以容纳 MaxCompute(ODPS) 数据,会在执行期报错。 |
| TIMESTAMP (存储 UTC 时间 纳秒级小数点后 9 位,但展示时按照当前时区转) | TIMESTAMP | 仅支持 TIMESTAMP(6) 其他都不支持,TIMESTAMP 类型的精度最高是小数点后 6 位,所以存在精度损失。 |
| TIMESTAMP_NTZ(存储 UTC 时间纳秒级小数点后 9 位,完全和时区无关) | DATETIME | 仅支持 DATETIME(6), 其他都不支持,TIMESTAMP 跟时区相关,所以不支持。 |
| DATE(格式 yyyy-mm-dd,取值范围 0001-01-01~9999-12-31) | DATE | 仅支持 DATE,其他都不支持。 |
| DATETIME(精确到毫秒,小数点后 3 位,取值范围:0001-01-01 00:00:00.000~9999-12-31 23:59:59.999) | DATETIME | 仅支持 DATETIME(3) 及以上的小数点个数例如 DATETIME(4)/DATETIME(5)/DATETIME(6),其他不支持。 |
| ARRAY | ARRAY | 更多信息,参见下方 OceanBase 数据库 ARRAY 类型到 ODPS 的映射关系 内容。 |
| MAP | 暂不支持 | 暂不支持 |
| STRUCT | 暂不支持 | 暂不支持 |
| JSON | JSON | 暂不支持 |
OceanBase 数据库 ARRAY 类型到 ODPS 的映射关系
OceanBase 数据库支持的 ARRAY 类型到 ODPS 类型映射的关系如下所示:
| OceanBase 数据库 | ODPS |
|---|---|
| ARRAY(tinyint) | ARRAY<tinyint> |
| ARRAY(tinyint) | ARRAY<boolean> |
| ARRAY(smallint) | ARRAY<smallint> |
| ARRAY(int) | ARRAY<int> |
| ARRAY(bigint) | ARRAY<bigint> |
| ARRAY(float) | ARRAY<float> |
| ARRAY(double) | ARRAY<double> |
| ARRAY(varchar) | ARRAY<varchar> |
| ARRAY(varchar) | ARRAY<string> |
| ARRAY(array()) | ARRAY<array<>> |