MySQL与ClickHouse字段类型映射
Migration会根据源端的字段类型按默认规则转换成目的端字段类型,并以此完成自动建表和实时同步。
字段类型映射规则
当源端为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) | 有符号的定点数,可在加、减和乘法运算过程中保持精度。支持几种写法:
| |
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 | - |

