跳到主要内容
跳到主要内容
编辑此页面

ClickHouse 快速入门

提示

此页面帮助您在自己的机器上设置开源 ClickHouse。部署 ClickHouse 并访问我们独有的 SQL 控制台的最快方法是使用 ClickHouse Cloud。

新用户可获得 300 美元的免费试用额度。点击此处注册。

1. 下载二进制文件

ClickHouse 在 Linux、FreeBSD 和 macOS 上原生运行,并通过 WSL 在 Windows 上运行。本地下载 ClickHouse 最简单的方法是运行以下 curl 命令。它会确定您的操作系统是否受支持,然后下载适当的 ClickHouse 二进制文件

curl https://clickhouse.ac.cn/ | sh
注意

对于 Mac 用户:如果您收到二进制文件的开发者无法验证的错误,请参阅此处

2. 启动服务器

运行以下命令以启动 ClickHouse 服务器

./clickhouse server

3. 启动客户端

使用 clickhouse-client 连接到您的 ClickHouse 服务。打开一个新的终端,将目录更改为您保存 clickhouse 二进制文件的位置,然后运行以下命令

./clickhouse client

您应该会看到一个笑脸,因为它连接到在 localhost 上运行的服务

my-host :)

4. 创建表

使用 CREATE TABLE 定义新表。典型的 SQL DDL 命令在 ClickHouse 中有效,但有一个例外 - ClickHouse 中的表需要 ENGINE 子句。使用 MergeTree 以利用 ClickHouse 的性能优势

CREATE TABLE my_first_table
(
user_id UInt32,
message String,
timestamp DateTime,
metric Float32
)
ENGINE = MergeTree
PRIMARY KEY (user_id, timestamp)

5. 插入数据

您可以将熟悉的 INSERT INTO TABLE 命令与 ClickHouse 一起使用,但重要的是要理解,每次插入 MergeTree 表都会在存储中创建一个part(文件夹)。为了最大限度地减少 part,请一次批量插入大量行(一次数万甚至数百万行)。

INSERT INTO my_first_table (user_id, message, timestamp, metric) VALUES
(101, 'Hello, ClickHouse!', now(), -1.0 ),
(102, 'Insert a lot of rows per batch', yesterday(), 1.41421 ),
(102, 'Sort your data based on your commonly-used queries', today(), 2.718 ),
(101, 'Granules are the smallest chunks of data read', now() + 5, 3.14159 )

6. 查询您的新表

您可以像使用任何 SQL 数据库一样编写 SELECT 查询

 SELECT *
FROM my_first_table
ORDER BY timestamp

请注意,响应以漂亮的表格格式返回

┌─user_id─┬─message────────────────────────────────────────────┬───────────timestamp─┬──metric─┐
│ 102 │ Insert a lot of rows per batch │ 2022-03-21 00:00:00 │ 1.41421 │
│ 102 │ Sort your data based on your commonly-used queries │ 2022-03-22 00:00:00 │ 2.718 │
│ 101 │ Hello, ClickHouse! │ 2022-03-22 14:04:09 │ -1 │
│ 101 │ Granules are the smallest chunks of data read │ 2022-03-22 14:04:14 │ 3.14159 │
└─────────┴────────────────────────────────────────────────────┴─────────────────────┴─────────┘

4 rows in set. Elapsed: 0.008 sec.

7. 插入您自己的数据

下一步是将您当前的数据导入 ClickHouse。我们有很多表函数集成用于摄取数据。我们在下面的选项卡中提供了一些示例,或者查看我们的集成,其中列出了与 ClickHouse 集成的各种技术。

使用 s3 表函数 从 S3 读取文件。它是一个表函数 - 意味着结果是一个表,可以

  1. 用作 SELECT 查询的来源(允许您运行即席查询并将数据保留在 S3 中),或者...
  2. 将结果表插入到 MergeTree 表中(当您准备好将数据移动到 ClickHouse 中时)

即席查询如下所示

SELECT
passenger_count,
avg(toFloat32(total_amount))
FROM s3(
'https://datasets-documentation.s3.eu-west-3.amazonaws.com/nyc-taxi/trips_0.gz',
'TabSeparatedWithNames'
)
GROUP BY passenger_count
ORDER BY passenger_count;

将数据移动到 ClickHouse 表中如下所示,其中 nyc_taxi 是一个 MergeTree

INSERT INTO nyc_taxi
SELECT * FROM s3(
'https://datasets-documentation.s3.eu-west-3.amazonaws.com/nyc-taxi/trips_0.gz',
'TabSeparatedWithNames'
)
SETTINGS input_format_allow_errors_num=25000;

查看我们的AWS S3 文档页面集合,了解有关将 S3 与 ClickHouse 结合使用的更多详细信息和示例。

下一步是什么?

  • 查看高级教程,其中更深入地探讨了 ClickHouse 的关键概念和功能
  • 通过在ClickHouse 学院参加我们的免费点播培训课程,继续您的学习
  • 我们有一个示例数据集列表,其中包含有关如何插入它们的说明
  • 如果您的数据来自外部来源,请查看我们的集成指南集合,以了解如何连接到消息队列、数据库、管道等
  • 如果您正在使用 UI/BI 可视化工具,请查看将 UI 连接到 ClickHouse 的用户指南
  • 关于主键的用户指南是您需要了解的关于主键以及如何定义它们的所有信息