创建表
create database test;
use test;
导入数据
CREATE TABLE dg_sku_inventory_day ENGINE = MergeTree ORDER BY id AS SELECT * FROM mysql('192.168.1.20:3306', 'dgdata', 'dg_sku_inventory_day', 'root', '123456');
前提条件:
MySQL的主键必须为not null
192.168.1.20:3306 为MySQL的IP地址和端口号
dgdata 为MySQL的库,作为数据源的
dg_sku_inventory_day 为MySQL的表,源表
root 为MySQL的账号
123456 为MySQL的账号对应的密码 账号需要具备远程连接访问的权限。
解释:导入数据598万行,耗时82.305,总大小1.31GB 最后一次每秒7.264万行导入,每秒导入15.89MB的数据。 注意: 1.order by 必须存在,字段大小要和MySQL的大小写一样 2.主键列在MySQL中必须定义为NOT NULL(报错:DB::Exception: Sorting key cannot contain nullable columns.) 3.导入速度和mysql的列有关,若列较少导入的更快,和硬件的读取写入速度,网络带宽也有影响。 4.支持从TiDB和MySQL直接读取数据。
查看表结构
clickhouse 左图 mysql 右图
这时候,发现mysql中字段inventory_money 原本是decimal类型的,在clickhouse变成了String类型。
ClickHouse 与 Mysql 字段映射关系比表
ClickHouse | MySQL | Comment |
UInt8, UInt16, UInt32, UInt64 | TINYINT UNSIGNED, SMALLINT UNSIGNED, INT UNSIGNED, BIGINT UNSIGNED | |
Int8, Int16, Int32, Int64 | TINYINT SIGNED, SMALLINT SIGNED, INT SIGNED, BIGINT SIGNED | |
Float32, Float64 | FLOAT, DOUBLE | Supports inf, -inf, nan, recommended NOT to use by ClickHouse! |
String | BLOB, TEXT, VARCHAR, VARBINARY | No encoding. Recommended to use UTF-8. In fact behaves like a BLOB. |
FixedString(n) | CHAR, BINARY |