clickhouse 导入mysql 的数据

mysql 表结构test表,7700w+数据:

CREATE TABLE `test` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`keyword` varchar(100) CHARACTER SET utf8 DEFAULT '' COMMENT '关键词',
`platform` tinyint(4) NOT NULL DEFAULT '2' COMMENT '',
`word_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '词类型',
`ctime` int(10) DEFAULT '0' COMMENT '创建时间',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_keyword` (`keyword`) USING BTREE,
KEY `idx_ctime` (`ctime`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=77715192 DEFAULT CHARSET=utf8mb4 comment='测试表';

两种操作方式:

一、直接远程跟mysql 连接,远程读取mysql 表的数据,此种方式读取非常慢,但是可以自定义某些字段,engine=MySQL 不能用小写。

clickhouse 命令行执行,新建 test3 表,只取 id,keyword,ctime 3个字段,可参考官方文档 

CREATE TABLE test3
(
`id` UInt32,
`keyword` String,
`ctime` UInt32
)ENGINE = MySQL('192.168.0.1:3306', 'db_name', 'table_name', 'user_name', 'password');
成功后,执行sql 查询 select count(`id`) from test3;  用时63秒
执行sql 查询 select * from test3 order by id desc limit 5; 用时125秒
 
 
 
二、创建clickhouse 表,把mysql 的数据导入进来,命令行执行 ,只能直接拷贝整个表里面的所有字段,创建 test2表
CREATE TABLE test2 ENGINE = MergeTree
order by id AS
SELECT * FROM mysql('192.168.0.1:3306', 'db_name', 'table_name', 'user_name', 'password');
会直接导入所有的7700w+数据,用时 161秒
成功后,执行sql 查询 select count(`id`) from test2;  用时3.5秒
执行sql 查询 select * from test2 order by id desc limit 5; 用时0.5秒
 
 
 
 
 
 

 

 

posted @ 2020-12-10 18:02  wjq310  阅读(1666)  评论(0编辑  收藏  举报