更新时间:2026-04-10 GMT+08:00
分享

MySQL与ClickHouse字段类型映射

Migration会根据源端的字段类型按默认规则转换成目的端字段类型,并以此完成自动建表和实时同步。

字段类型映射规则

当源端为MySQL,目的端为ClickHouse时,支持的字段类型请参见下表,以确保数据完整同步到目的端。

表1 MySQL > ClickHouse支持的字段类型

类别

数据类型(MySQL)

数据类型(ClickHouse)

说明

字符串

CHAR(M)

FixedString

对于有明确长度的字符串可以使用,使用Null字节填充末尾字符。

VARCHAR(M)

String

字符串可以是任意长度的。它可以包含任意的字节集,包含空字节。因此,字符串类型可以代替其他 DBMSs 中的VARCHAR、BLOB、CLOB 等类型。

数值

BOOLEAN

UInt8

ClickHouse没有单独的类型来存储布尔值。可以使用UInt8 类型,取值限制为0或 1。

TINYINT

Int8

取值范围:-128 - 127。

TINYINT UNSIGNED

UInt8

取值范围:0 - 255。

SMALLINT

Int16

取值范围 :-32768 - 32767。

SMALLINT UNSIGNED

UInt16

取值范围:0 - 65535。

MEDIUMINT

Int32

取值范围: -2147483648 - 2147483647。

MEDIUMINT UNSIGNED

UInt32

取值范围:0 - 4294967295。

INT

Int32

取值范围: -2147483648 - 2147483647。

INT UNSIGNED

UInt32

取值范围:0 - 4294967295。

BIGINT

Int64

取值范围 :-9223372036854775808 - 9223372036854775807。

BIGINT UNSIGNED

UInt64

取值范围:0 - 18446744073709551615。

REAL

-

-

DECIMAL(M,D)

Decimal(P, S)

有符号的定点数,可在加、减和乘法运算过程中保持精度。支持几种写法:

  • Decimal(P, S)
  • Decimal32(S)
  • Decimal64(S)
  • Decimal128(S)

NUMERIC

-

-

FLOAT(M,D)

Float32

大小4字节,有效精度7位。

DOUBLE(M,D)

Float64

大小8字节,有效精度16位。

DOUBLE PRECISION

-

-

BIT(M)

-

ClickHouse不支持BIT类型。

日期时间

DATE

Date

用两个字节存储,表示从 1970-01-01(无符号)到当前的日期值。日期中没有存储时区信息。

TIME

-

-

DATETIME

-

-

TIMESTAMP

DateTime64

包含时分秒,可以记录亚秒,支持用字符串形式插入,最小值为 1970-01-01 00:00:00。时区使用启动客户端或服务器时的系统时区。

YEAR(M)

-

-

多媒体(二进制)

BINARY(M)

String

-

VARBINARY(M)

String

-

TEXT

String

-

TINYTEXT

String

-

MEDIUMTEXT

String

-

LONGTEXT

String

-

BLOB

String

-

TINYBLOB

String

-

MEDIUMBLOB

String

-

LONGBLOB

String

-

特殊类型

SET

-

-

JSON

JSON

22.8 版本开始支持。

ENUM

Enum

-

相关文档