持续创作,加速成长!这是我参与「掘金日新计划 · 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(相应地更改主机名)。
需要注意的是,在你的内置 UI中,用户名使用默认值填充,密码文本字段保留为空。如果为默认用户分配了密码,请将其输入密码字段。好啦,我们可以尝试运行查询,例如,以下命令返回预定义数据库的名称:
SHOW databases;
use database_name;
... ... ...
在UI界面上单击RUN按钮,响应会显示在Play UI的下部,如下所示。
使用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。然后我们就创建库表,并插入数据进行了测试。