有三台CentOS7服务器安装了ClickHouse
| HostName | IP | 安装程序 | 程序端口 |
| centf8118.sharding1.db | 192.168.81.18 | clickhouse-server,clickhouse-client | 9000 |
| centf8119.sharding2.db | 192.168.81.19 | clickhouse-server,clickhouse-client | 9000 |
| centf8120.sharding3.db | 192.168.81.20 | clickhouse-server,clickhouse-client | 9000 |
1:创建数据库
CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster] [ENGINE = engine(...)]
CREATE DATABASE testdb; //创建数据库
DROP DATABASE testdb; //删除数据库
2:建表
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [compression_codec] [TTL expr1],
name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2] [compression_codec] [TTL expr2],
...
) ENGINE = engine
CREATE TABLE test_table( province String, province_name String, create_date date ) ENGINE = MergeTree(create_date, (province), 8192); 如果直接这样执行会报错,有两种方法解决: 1: 在每一行后面加右斜杠,比如:
CREATE TABLE test_table( \ province String, \ province_name String, \ create_date date \ ) ENGINE = MergeTree(create_date, (province), 8192); 2: 在登录的时候加 -m参数支持多行模式,比如: clickhouse-client -m
ENGINE:是表的引擎类型,最常用的MergeTree。还有一个Log引擎也是比较常用。MergeTree要求有一个日期字段,还有主键。Log没有这个限制。
create_date:是表的日期字段,一个表必须要有一个日期字段。
province:是表的主键,主键可以有多个字段,每个字段用逗号分隔
8192:是索引粒度,用默认值8192即可。
3:导入数据
3.1:普通的CSV文件导入。
cat > test_table.csv << EOF WA,WA_NAME,2020-08-25 CA,CA_NAME,2020-09-25 OR,OR_NAME,2020-10-25 EOF
–导数
clickhouse-client --query "INSERT INTO testdb.test_table FORMAT CSV" < test_table.csv;
–或者用管道的方式
cat test_table.csv | clickhouse-client --query “INSERT INTO testdb.test_table FORMAT CSV”
查看结果数据:
centf8118.sharding1.db :) select * from test_table limit 2 ; SELECT * FROM test_table LIMIT 2 ┌─province─┬─province_name─┬─create_date─┐ │ WA │ WA_NAME │ 2020-08-25 │ └──────────┴───────────────┴─────────────┘ ┌─province─┬─province_name─┬─create_date─┐ │ CA │ CA_NAME │ 2020-09-25 │ └──────────┴───────────────┴─────────────┘ 2 rows in set. Elapsed: 0.004 sec.