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秒