ClickHouse数据库之Http篇

标签: Clickhouse 分类: 数据库 创建时间:2020-01-15 03:07:29 更新时间:2024-10-31 11:33:27

这一篇主要介绍使用Postman工具调试ClickHouse数据库的http接口,在官网HTTP 客户端上其实写的很明白了,我这里就简单的做一个说明和示例。

1.远程登录

有两种实现远程登录的方式,一种是讲user和password写入url中,另一种就是使用HTTP Basic Authentication的方式

1
2
3
4
5
## url方式
http://192.168.1.90:8123?query=SELECT 1&user=admin&password=1q2w3e4r.

## basic方式
http://admin:1q2w3e4r.@192.168.1.90:8123/?query=SELECT 1

2.数据查询

(1) 使用get请求进行查询

1
http://admin:1q2w3e4r.@192.168.1.90:8123/?query=SELECT  * From 数据库名.表名 where id=443

(2) 使用post进行查询

1
2
3
4
## url
http://admin:1q2w3e4r.@192.168.1.90:8123/
## body中为纯文本,注意content-type为text
SELECT * From 数据库名.表名 where id=443

其他的查询方式SELECT 查询语法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT [DISTINCT] expr_list
[FROM [db.]table | (subquery) | table_function] [FINAL]
[SAMPLE sample_coeff]
[ARRAY JOIN ...]
[GLOBAL] ANY|ALL INNER|LEFT JOIN (subquery)|table USING columns_list
[PREWHERE expr]
[WHERE expr]
[GROUP BY expr_list] [WITH TOTALS]
[HAVING expr]
[ORDER BY expr_list]
[LIMIT n BY columns]
[LIMIT [n, ]m]
[UNION ALL ...]
[INTO OUTFILE filename]
[FORMAT format]

3.请求格式

可以在 (INSERT) 以及 (SELECT) 请求中使用不同的格式,clickhouse可以接受的格式有很多输入输出格式,例如:JSON格式、XML格式。

1
SELECT id From lsmfhx.realtime where id=443 FORMAT JSON

4.插入数据

INSERT 必须通过 POST 方法来插入数据,INSERT INTO。如下所示,为插入的两行数据。

1
2
3
4
## url登录
http://admin:1q2w3e4r.@192.168.1.90:8123/
## body中的内容
INSERT INTO lsmfhx.siteinfo (列1的名,列2的名) VALUES (列1的值,列2的值),(列1的值,列2的值)

根据测试结果,主键必须要显示的列出,其他的可以为空的列,可以不列出。

1
2
3
INSERT INTO lsmfhx.realtime (id,SiteNo,RecordTime,Alarm,SumFlux,SumHeat,RemainFlux,RemainMoney,InsFlux,
InsHeat,DifPress,Tempe,Press,DpPipeTempe,PPipeTempe,StandardInsFlux,StandardInsHeat,UnitPrice, `State`, GasTime,EleTime,BatSecond,OffSecond,OffCnt,SumSharp,
SumPeak,SumFlat,SumValley) VALUES (5863155,1,'2019-02-05 08:45:00',0,8496.531,23633.764,0.0,0.0,0.0,0.0,0.0,12.99,0.006,10.0,0.0,0.48,0.0,Null,Null,61842816,76384227,0,6378665,74,3545.8,147762.0,0.0,51732.8),(5863156,2,'2019-02-05 08:45:00',0,9972.795,27702.08,0.0,0.0,0.0,0.0,0.17,13.023,0.0,12.0,0.0,0.48,0.0,Null,Null,64689196,76385603,0,6197024,68,3545.8,147762.0,0.0,51732.8)

返回值:插入成功后,返回值为空

5.其他的SQL语句

还有一些其他的sql语句,比如:

1
2
3
4
## 创建数据库
CREATE DATABASE
## 创建表
CREATE TABLE

clickhouse一些函数,比如:数学函数、条件函数、日期时间函数

(1) 创建数据库示例:

1
CREATE DATABASE if not exists lsmfhx2

(1) 创建数据表示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
CREATE TABLE if not exists lsmfhx.realtime (
id UInt32,
SiteNo Nullable(Int16),
RecordTime String,
Alarm Nullable(Int16),
SumFlux Nullable(Decimal(18,3)),
SumHeat Nullable(Decimal(18,3)),
RemainFlux Nullable(Decimal(18,3)),
RemainMoney Nullable(Decimal(18,3)),
InsFlux Nullable(Decimal(9,3)),
InsHeat Nullable(Decimal(9,3)),
DifPress Nullable(Decimal(9,3)),
Tempe Nullable(Decimal(9,3)),
Press Nullable(Decimal(9,3)),
DpPipeTempe Nullable(Decimal(9,3)),
PPipeTempe Nullable(Decimal(9,3)),
StandardInsFlux Nullable(Decimal(9,3)),
StandardInsHeat Nullable(Decimal(9,3)),
UnitPrice Nullable(Decimal(9,3)),
`State` Nullable(Int16),
GasTime Nullable(Int16),
EleTime Nullable(Int16),
BatSecond Nullable(Int16),
OffSecond Nullable(Int16),
OffCnt Nullable(Int16),
SumSharp Nullable(Decimal(18,3)),
SumPeak Nullable(Decimal(18,3)),
SumFlat Nullable(Decimal(18,3)),
SumValley Nullable(Decimal(18,3))
) ENGINE = MergeTree() ORDER BY (id)
小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。