Clickhouse系列之两种Client连接方式

697 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情

前言

连接Clickhouse 有两种方式,一种是内置的方式(built-in UI),另一种是ClickHouse 客户端方式。当然如同通过Clickhouse client端还有其他更多的方式,如DBeaver,datagrip等,这些我们在后续会一一介绍,多多关注吧!!!

正文

现在我们对这两种方式进行一一介绍和使用。

使用built-in UI连接

默认情况下,ClickHouse服务器在端口8123上侦听HTTP客户端。有一个内置的UI,用于在以下位置运行SQL查询http://127.0.0.1:8123/play(相应地更改主机名)。

image.png

需要注意的是,在你的内置 UI中,用户名使用默认值填充,密码文本字段保留为空。如果为默认用户分配了密码,请将其输入密码字段。好啦,我们可以尝试运行查询,例如,以下命令返回预定义数据库的名称:

SHOW databases;
use database_name;
... ... ...

在UI界面上单击RUN按钮,响应会显示在Play UI的下部,如下所示。

image.png

使用Clickhouse Client端连接

我们还可以使用ClickHouse client的命令行工具连接到ClickHouse服务器,命令如下:

clickhouse-client  
或者
clickhouse-client -m

现在我们可以进行sql语句的编写了,现在以系统表为例:

SHOW TABLES FROM system LIMIT 10

结果如下:

┌─name───────────────────────────┐
│ aggregate_function_combinators │
│ asynchronous_inserts           │
│ asynchronous_metric_log        │
│ asynchronous_metrics           │
│ backups                        │
│ build_options                  │
│ certificates                   │
│ clusters                       │
│ collations                     │
│ columns                        │
└────────────────────────────────┘

10 rows in set. Elapsed: 0.003 sec.

现在我们以创建表和插入数据为案例:

创建库,命令如下:

CREATE DATABASE IF NOT EXISTS helloworld

创建表,命令如下:

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

现在我们在helloworld库中的my_first_table插入一些数据,命令如下:

INSERT INTO helloworld.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 )

执行没有错误,那就说明成功拉,可以直接查询拉。

总结

这节我们主要讲解连接Clickhouse的两种方式,如果你对命令比较熟悉使用client端,如果你喜欢界面化可以使用内置的UI。然后我们就创建库表,并插入数据进行了测试。