Skip to main content

ClickHouse快速开始

tip

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

新用户可以获得300美元的免费试用信用额度。点击这里注册。

1: 下载二进制文件

ClickHouse可以在Linux、FreeBSD和macOS上本地运行,并且可以通过WSL在Windows上运行。

在本地下载ClickHouse的最简单方法是运行以下curl命令。它会确定您的操作系统是否受支持,然后下载适当的ClickHouse二进制文件:

curl https://clickhouse.com/ | sh

2: 启动服务器

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

./clickhouse server

3: 启动客户端

使用clickhouse-client连接到您的ClickHouse服务。打开一个新的终端,切换到您保存clickhouse二进制文件的目录,并运行以下命令:

./clickhouse client

您应该会看到一个笑脸,表示它正在连接到您在localhost上运行的服务:

my-host :)

4: 创建表

使用CREATE TABLE定义一个新表。典型的SQL DDL命令在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的用户指南
  • 主键用户指南是您需要了解的关于主键以及如何定义它们的一切