背景介绍:
有三台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_datedate) ENGINE= MergeTree(create_date, (province), 8192);
如果直接这样执行会报错,有两种方法解决:1: 在每一行后面加右斜杠,比如:
CREATE TABLE test_table( \
province String, \
province_name String, \
create_datedate\
) 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
LIMIT2┌─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.
View Code
3.2:特殊的CSV文件导入(包含回车换行,转义符等)。
–建表(sql语句)
CREATE TABLE testdb.test_table3 ( id1 UInt32, id2 Float32, name1 String, name2 String, date1 Date, date2 DateTime) ENGINE = Log;
–测试数据(Linux命令)
[root@centf8118 tmp]# cat test_table3.csv
1,123.456,”abc 123”,” abc""'123”,2020-08-26,2020-08-26 17:08:09
–执行导入(Linux命令)
clickhouse-client --query "INSERT INTO testdb.test_table3 FORMAT CSV" < test_table3.csv
–查看结果(sql语句)
centf8118.sharding1.db :) select *from test_table3;
SELECT*FROM test_table3
┌─id1─┬─────id2─┬─name1─────┬─name2────────────┬──────date1─┬───────────────date2─┐
│1 │ 123.456 │ ”abc 123” │ ” abc" "'123” │ 2020-08-26 │ 2020-08-26 17:08:09 │
└─────┴─────────┴───────────┴──────────────────┴────────────┴─────────────────────┘
View Code
3.3:尝试导入官方提供的大数据表
1>>下载并提取表数据,提取的文件大小约为10GB。
我这里下载到/data/clickhouse/tmp/目录下。
curl http