数据类型映射
MySQL/TiDB 类型映射
MySQL/TiDB 类型 | Paimon/Flink 类型 |
---|---|
BOOLEAN | |
TINYINT | TINYINT |
TINYINT UNSIGNED SMALLINT | SMALLINT |
SMALLINT UNSIGNED MEDIUMINT INT | INT |
INT UNSIGNED BIGINT | BIGINT |
DECIMAL(20, 0) | |
FLOAT FLOAT UNSIGNED | FLOAT |
REAL DOUBLE DOUBLE PRECISION | DOUBLE |
NUMERIC(p, s) DECIMAL(p, s) FIXED(p, s) | DECIMAL(p, s) |
DATE | DATE |
TIME [(p)] | TIME [(p)] |
TIMESTAMP [(p)] DATETIME [(p)] | TIMESTAMP [(p)] |
CHAR(n) VARCHAR(n) TEXT ENUM JSON | STRING |
BINARY VARBINARY BLOB | BYTES |
TINYINT(1)
对应 BOOLEAN
类型TINYINT(1)
数字 0
转换为 false
,其他数字转换为 true
,这属于 MySql JDBC 驱动规范BIGINT UNSIGNED
对应 DECIMAL(20, 0)
参考:
Paimon 数据类型
类型 | 字段 | 说明 |
---|---|---|
数值 | TINYINT | 1字节的带符号整数,范围从 -128 到 127。 |
数值 | SMALLINT | 2字节的带符号整数,范围从 -32,768 到 32,767。 |
数值 | INT | 4字节的带符号整数,范围从 -2,147,483,648 到 2,147,483,647。 |
数值 | BIGINT | 8字节的带符号整数,范围从 -9,223,372,036,854,775,808到9,223,372,036,854,775,807。 |
数值 | FLOAT | 4字节的单精度浮点数。 |
数值 | DOUBLE | 8字节的双精度浮点数。 |
数值 | DECIMAL(p, s) | 固定精度的十进制数。 p 是总位数(精度),s 是小数点后的位数(标度)。 例如 DECIMAL(10, 2)。 |
字符串 | CHAR(n) | 固定长度的字符串,长度为 n。 |
字符串 | VARCHAR(n) | 可变长度的字符串,最大长度为 n。 |
字符串 | STRING | 可变长度的字符串,理论上长度无限 (在 Flink 中等价于 VARCHAR(2147483647))。 这是最常用的字符串类型。 |
二进制 | BINARY(n) | 固定长度的二进制数据,长度为 n。 |
二进制 | VARBINARY(n) | 可变长度的二进制数据,最大长度为 n。 |
二进制 | BYTES | 可变长度的二进制数据 (在 Flink 中等价于 VARBINARY(2147483647))。 |
布尔 | BOOLEAN | TRUE, FALSE, 或 NULL。 |
日期 | DATE | 日期类型,只包含年、月、日。例如 2023-10-27。 |
时间 | TIME(p) | 时间类型,只包含时、分、秒和毫秒。 p 是秒的小数部分的精度,范围是 0-9。 |
日期时间 | TIMESTAMP(p) 或 TIMESTAMP WITHOUT TIME ZONE | 无时区时间戳。它在任何时区下查询出来的都是这个字面时间。 |
日期时间 | TIMESTAMP_LTZ(p) 或 TIMESTAMP(p) WITH LOCAL TIME ZONE | 带本地时区时间戳。 当写入或读取时,它会根据 Flink 会话的本地时区进行转换,以UTC数值存储在paimon。 例如,'2023-10-27 10:00:00' 在UTC+8的flink会话中写入。 当修改flink时区为 UTC 时区再读取,会得到 2023-10-27 02:00:00。 |
集合 | ARRAY<T> | 元素类型为 T 的数组。例如 ARRAY<STRING>。 |
集合 | MAP<K, V> | 键类型为 K,值类型为 V 的 Map。例如 MAP<STRING, INT>。 |
集合 | ROW<f1 T1, f2 T2, ...> 或 STRUCT<...> | 结构体类型,包含多个命名字段。例如 ROW<name STRING, age INT>。 |