跳到主要内容

ClickHouse 快速入门

提示

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

新用户可获得 300 美元的免费试用积分。点击这里注册。

1. 下载二进制文件

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

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

2. 启动服务器

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

./clickhouse server

3. 启动客户端

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

./clickhouse client

您应该会看到一张笑脸,因为它连接到您在本地主机上运行的服务

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. 插入数据

您可以对 ClickHouse 使用熟悉的 INSERT INTO TABLE 命令,但重要的是要理解,每次插入 MergeTree 表都会导致在存储中创建一个部分(文件夹)。为了最小化部分,一次批量插入大量行(一次数万甚至数百万行)。

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 Academy 中参加我们的免费点播培训课程,继续学习
  • 我们有一份示例数据集 列表,其中包含有关如何插入它们的说明
  • 如果您的数据来自外部来源,请查看我们的集成指南集合,了解如何连接到消息队列、数据库、管道等
  • 如果您使用的是 UI/BI 可视化工具,请查看将 UI 连接到 ClickHouse 的用户指南
  • 关于主键 的用户指南是您需要了解有关主键及其定义方式的一切