跳转到内容

数据类型映射

MySQL/TiDB 类型映射

MySQL/TiDB 类型Paimon/Flink 类型
BOOLEAN
TINYINTTINYINT
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)
DATEDATE
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 数据类型

类型字段说明
数值TINYINT1字节的带符号整数,范围从 -128 到 127。
数值SMALLINT2字节的带符号整数,范围从 -32,768 到 32,767。
数值INT4字节的带符号整数,范围从 -2,147,483,648 到 2,147,483,647。
数值BIGINT8字节的带符号整数,范围从 -9,223,372,036,854,775,808到9,223,372,036,854,775,807。
数值FLOAT4字节的单精度浮点数。
数值DOUBLE8字节的双精度浮点数。
数值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))。
布尔BOOLEANTRUE, 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>。

爻擎 AI 大数据