1.使用MySQL表引擎
create table engine=MySQL('host:port', 'database', 'table', 'user', 'password'[, replace_query, 'on_duplicate_clause']);
这个非常垃圾,强烈不推荐使用。
2.物化mysql数据库引擎
CREATE DATABASE test ENGINE = MaterializeMySQL('ip:port', 'database', 'user', 'password');
这个是数据库引擎,意味着把整个库需要导入到clickhouse,且需要主键。原理是clickhouse模拟成一个从库。第一次读取全量数据,后续的读取binlog的数据,获取增量数据。
这个也不是特别推荐,因为需要整个库迁移,且都需要主键。
3.表函数select * from mysql()
INSERT INTO table SELECT * FROM mysql('ip:port', 'database', 'table', 'user', 'password') where xxx=xxx
这个导入速度也很快,且不需要上面其他约束。
4.导入速度对比
0 rows in set. Elapsed: 174.137 sec. Processed 28.20 million rows, 9.27 GB (161.96 thousand rows/s., 53.22 MB/s.)
hostname :) select count(*) from test;
SELECT count(*)
FROM test
Query id: 73e02a52-b8b1-4bee-bf44-fb39576bd731
┌──count()─┐
│ 28203529 │
└──────────┘
1 rows in set. Elapsed: 0.002 sec.
hostname :)
非常快的
网友评论