ClickHouse 简单操作

Click House官方中文文档-SQL语法

1.创建&查看&使用数据库

1
2
3
4
5
6
7
8
# 语法:
CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster] [ENGINE = engine(...)]
# 示例:
create database test;
# 查看数据库
show databases;
# 选择/使用数据库
use test;

2.创建表

1
2
3
4
5
6
7
8
9
10
11
# 语法:
CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
(
name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [compression_codec] [TTL expr1],
name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2] [compression_codec] [TTL expr2],
...
) ENGINE = engine
# 示例:(TinyLog是最简单的表的引擎,用于将数据存储在磁盘上。常用于小表。)
create table t1 (id Int32,name String) engine=TinyLog;
# 查看所有表
show tables;

3.插入&查询数据

1
2
3
4
# 插入数据
insert into t1 (id, name) values (1, 'abc'), (2, 'bbbb'),(3,'sdfg');
# 查询所有数据
select * from t1;

ClickHouse 命令行客户端

  • 交互模式:
    1
    2
    clickhouse-client
    clickhouse-client --host=... --port=... --user=... --password=...
  • 启用多行查询:
    1
    2
    clickhouse-client -m
    clickhouse-client --multiline
  • 以批处理模式运行查询:
    1
    2
    3
    clickhouse-client --query='SELECT 1'
    echo 'SELECT 1' | clickhouse-client
    clickhouse-client <<< 'SELECT 1'
  • 从指定格式的文件中插入数据:
    1
    2
    clickhouse-client --query='INSERT INTO table VALUES' < data.txt
    clickhouse-client --query='INSERT INTO table FORMAT TabSeparated' < data.tsv

ClickHouse HTTP 访问

默认情况下,ClickHouse 会在8123端口监听 HTTP 请求。如果你发送一个不带参数的 GET 请求,它会返回一个 OK 字符串,你可以将它用在 ClickHouse 的健康检查脚本中。

1
2
$ curl 'http://localhost:8123/'
Ok.

在使用 curl 等工具访问 ClickHouse 的 HTTP 接口时,可以通过 URL 中的 query 参数发送请求,或者发送 POST 请求,或者将查询的开头部分放在 query 参数中,而将其它部分放在 POST 中。

1
2
3
# 可用HTTP客户端工具访问http://localhost:8123/?query=select * from test.t1
# 作为 query 参数,需要对 URL 进行编码,如空格编码为`%20`。
$ curl 'http://localhost:8123/?query=select%20*%20from%20test.t1'