MySQL数据导入到ClickHouse

创建表

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 padded. Less functions available than String, in fact it behaves like BINARY.
Date DATE UNIX epoch date up to 2038.
DateTime DATETIME, TIMESTAMP UNIX epoch timestamp up to 2038.
Enum ENUM Similar to MySQL ENUM. Behaves like Int8/16.
Array(type) n.a. Array of type. Closest equivalent in MySQL is JSON? Not well supported.
Tuple() n.a.  
Nested() n.a. Closest equivalent in MySQL is JSON?
AggregateFunction() n.a.  
Set n.a.  
Expression n.a.

您的资助是我最大的动力!
金额随意,欢迎来赏!

如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的推荐按钮。
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的关注我

如果,想给予我更多的鼓励,求打

因为,我的写作热情也离不开您的肯定支持,感谢您的阅读!

原文地址:https://www.cnblogs.com/GreenForestQuan/p/14539655.html