clickhouse基本概念:跟着chatgpt一起学|2.clickhouse入门(1)-CSDN博客
clickhouse中的数据建模和表设计:跟着chatgpt一起学|2.Clickhouse入门(2)-CSDN博客、
clickhouse中的MergeTree:跟着chatgpt一起学|clickhouse入门(3)MergeTree-CSDN博客
本篇将会带大家尝试下,使用clickhouse客户端工具(clienthouse-client)以及python代码的方式,来进行数据的导入和查询。
目录
4.1.1 使用clickhouse-client将学生信息导入clickhouse
4.1.2 使用clickhouse-client查询学生信息
4.1 使用clickhouse-client进行数据操作
整体的语法和其他数据库非常相似
4.1.1 使用clickhouse-client将学生信息导入clickhouse
首先,假设我们有一个名为students的表,它包含id、name和age字段。我们将准备一个包含学生信息的文本文件student_data.tsv,格式如下:
```plaintext
1 Alice 20
2 Bob 21
3 Charlie 22
```
接下来,我们将使用clickhouse-client将这些学生信息导入ClickHouse中。假设ClickHouse服务器位于localhost上,端口号为9000。
首先,使用以下命令连接到ClickHouse服务器:
```bash
clickhouse-client --host=localhost --port=9000
```
然后,我们需要在ClickHouse中创建一个名为students的表来存储学生信息。可以使用以下SQL语句在ClickHouse中创建表:
CREATE TABLE students (
id UInt32,
name String,
age UInt8
) ENGINE = MergeTree()
ORDER BY id;
接下来,我们可以使用INSERT INTO语句将数据从student_data.tsv文件导入到ClickHouse的students表中:
INSERT INTO students FORMAT TSV < /path/to/student_data.tsv
这将从student_data.tsv文件中读取数据,并将其插入到名为students的表中。
当然,当数据极少时,你可以使用insert语句直接导入
INSERT INTO students (id, name, age) VALUES
(1, 'Alice', 20),
(2, 'Bob', 21),
(3, 'Charlie', 22);
4.1.2 使用clickhouse-client查询学生信息
--查询students表内所有数据
SELECT * FROM students;
--有条件查询,查询students表内所有age>20的学生数据
SELECT * FROM students WHERE age > 20;
注意,当建表为分区表时,查询语句中应当带上分区字段
--建表语句
CREATE TABLE students (
id UInt32,
name String,
age UInt8
) ENGINE = MergeTree()
PARTITION BY age --分区字段为age
ORDER BY id;
--查询语句
SELECT * FROM students WHERE age > 20;
--这将返回年龄大于20岁的学生信息,ClickHouse会自动优化查询以提高性能。
4.2 使用python语句进行数据操作
先安装必需的包:
```bash
pip install clickhouse-driver
```
from clickhouse_driver import Client
# 连接到ClickHouse服务器
client = Client('localhost')
#client = Client(host='localhost', user='admin',
# password='123456', database='test',)
# 插入数据
client.execute('INSERT INTO students (id, name, age) VALUES', [
(4, 'David', 23),
(5, 'Eva', 22)
])
# 查询数据
result = client.execute('SELECT * FROM students')
# 打印查询结果
for row in result:
print(row)
这段代码假设已经表已经创建成功,实际上也可以在python内直接进行表的创建,感兴趣的小伙伴可以试一试。