安装
docker
1 | docker run --name clickhouse-server --ulimit nofile=262144:262144 --volume=$HOME/clickhouse:/var/lib/clickhouse -p 8123:8123 -p 9000:9000 -p 9004:9004 clickhouse/clickhouse-server |
apt
1 | sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 8919F6BD2B48D754 |
向 /etc/apt/sources.list.d/ 目录添加 ClickHouse 存储库:
1 | echo "deb https://packages.clickhouse.com/deb stable main" | sudo tee /etc/apt/sources.list.d/clickhouse.list |
更新 apt 包索引:
1 | sudo apt-get update |
安装 ClickHouse 服务器和客户端:
1 | sudo apt-get install -y clickhouse-server clickhouse-client |
启动 ClickHouse 服务:
1 | sudo service clickhouse-server start |
连接到 ClickHouse 服务器:
1 | clickhouse-client |
apt安装的中间会让你输入密码。下面是如何修改密码
1 | echo -n 密码 | openssl dgst -sha256 |
修改对应的xml文件,apt的在/etc/clickhouse-server/users.d/。docker的在刚才的$HOME/clickhouse
1 | <clickhouse> |
使用默认账号,登陆。PS:docker需要进入到容器内 docker exec -it
1 | clickhouse-client |
剩下的基本跟mysql一样了
建库
1 | CREATE DATABASE IF NOT EXISTS my_database; |
显示所有库 show database;

使用某个库 use my_database;
建表略有不同,引擎常用的是MergeTree,ORDER BY是定义主键
注意,不支持主键自增,需要自己维护主键,或者使用uuid。例如 id UUID DEFAULT generateUUIDv4(),
partition by (id) 分区,可选
PRIMARY KEY (id) 主键,可选
ORDER BY 必选
1 | CREATE TABLE my_database.my_table |
插入数据,插入多行数据
1 | INSERT INTO my_database.my_table (id, name, timestamp, value) VALUES (1, 'John Doe', '2021-01-01 00:00:00', 1.0); |
查询数据,查询特定列,条件查询,范围查询,排序查询结果,限制查询结果数量
1 | SELECT * FROM my_database.my_table; |
更新数据,ClickHouse 支持 ALTER TABLE 来修改表结构,例如添加或删除列,但不支持传统意义上的 UPDATE 语句来修改现有数据。需要使用 ALTER TABLE。
1 | ALTER TABLE my_database.my_table UPDATE name = 'new_value' WHERE id = 2; |
删除数据
1 | DELETE FROM my_database.my_table WHERE id = 1 |
使用python操作
1 | from clickhouse_driver import Client |