转载请注明出处:

InfluxDB有以下几个常用的端点,它们的作用和传参方式如下:

1./ping

端点:

  • 作用:用于检查InfluxDB实例的状态,返回InfluxDB的构建类型和版本信息。

  • 传参:无需传参,仅发送GET请求即可。

调用示例:  

curl http://localhost:8086/ping

2./write

端点:

  • 作用:用于将数据写入InfluxDB。

  • 传参:

    • 请求方式:发送POST请求。

    • 请求头:

      • Content-Type:设置为application/x-www-form-urlencodedtext/plain,表示请求体中的数据格式为InfluxDB的行协议(Line Protocol)。

    • 请求体:需要将要写入的数据按照InfluxDB的行协议格式进行编码,并作为请求体发送。

当有标签(tag)和字段(field)如下所示时,可以通过在数据点中使用逗号分隔并以键值对的形式传递参数:

curl -XPOST 'http://localhost:8086/write?db=my_database' \
--data-binary '
measurement_name,host=example_host,ip=192.168.1.100 name="John Doe",num=42 1627842300000000000
'

  也可以添加更多的数据点,每个数据点之间使用换行符进行分隔,以传递多个标签和字段的参数。

3./query

端点:

  • 作用:用于执行查询操作,从InfluxDB中检索数据。

  • 传参:

    • 请求方式:发送POST请求。

    • 请求头:

      • Content-Type:设置为application/x-www-form-urlencodedapplication/json,表示请求体中的数据格式为InfluxDB查询语句的格式(InfluxQL或Flux)。

    • 请求体:将查询语句编写为InfluxQL或Flux格式,并作为请求体发送。

curl -XPOST 'http://localhost:8086/query' \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'q=SELECT * FROM measurement_name WHERE time > now() - 1h'

4./query

端点(批量查询):

  • 作用:用于在单个请求中执行多个查询操作。

  • 传参:

    • 请求方式:发送POST请求。

    • 请求头:

      • Content-Type:设置为application/x-www-form-urlencodedapplication/json,表示请求体中的数据格式为InfluxDB查询语句的格式(InfluxQL或Flux)。

    • 请求体:将多个查询语句按照InfluxQL或Flux格式编写,并使用分号(;)作为分隔符,将它们放在请求体中一起发送。

curl -XPOST 'http://localhost:8086/query?db=my_database' \
--data-raw '
[
{
"measurement": "measurement_name1",
"tags": { "tag_key": "tag_value" },
"fields": [ "field_key1", "field_key2" ],
"time": "2022-01-01T00:00:00Z",
"query": "SELECT field_key1, field_key2 FROM measurement_name1 WHERE tag_key = 'tag_value'"
},
{
"measurement": "measurement_name2",
"tags": { "tag_key": "tag_value" },
"fields": [ "field_key1", "field_key2" ],
"time": "2022-01-01T00:00:00Z",
"query": "SELECT field_key1, field_key2 FROM measurement_name2 WHERE tag_key = 'tag_value'"
}
]
'

对每个部分的详细说明:

  • -XPOST:指定 HTTP 请求方法为 POST。

  • http://localhost:8086/query?db=my_database:设置目标 URL,其中 http://localhost:8086 是 InfluxDB 服务地址,query 是端点路径,db=my_database 是查询参数,指定要查询的数据库名称为 my_database

  • --data-raw:用于发送原始数据的 curl 选项。在这里,我们使用它来传递批量查询的 JSON 数据。

  • 这是实际的批量查询 JSON 数据示例。其中包含两个查询对象,每个对象都有以下属性:

    • measurement:测量名称;

    • tags:标签键值对;

    • fields:字段列表;

    • time:时间戳(可选);

    • query:实际的 InfluxDB 查询语句。

  请根据实际需求替换示例中的参数,并确保提供正确的查询语句和数据库名称。

  响应将返回多个查询结果,每个查询结果都以 JSON 格式表示。你可以通过解析响应来获取每个查询的结果。

5.异常总结

  5.1 unable to parse authentication credentials

  报错 "unable to parse authentication credentials" 表明在发送 InfluxDB 查询请求时,认证凭据解析错误。这是由于未正确配置或提供身份验证信息导致的。需要在发送 curl 请求时,提供了正确的用户名和密码来进行身份验证。可以使用 -u 参数来指定用户名和密码。以下是一个示例:

curl -XPOST 'http://localhost:8086/query' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-u username:password \
--data-urlencode 'q=SELECT * FROM measurement_name WHERE time > now() - 1h'

  请确保在 InfluxDB 的配置文件中启用了身份验证,并且提供了正确的用户名和密码。默认情况下,InfluxDB 的身份验证是禁用的,因此需要手动启用并配置用户凭据。

  如果问题仍然存在,请检查用户名和密码是否正确,以及 InfluxDB 配置文件中是否正确配置了身份验证。

  5.2 database name required

  报错 "database name required" 表明在发送 InfluxDB 查询请求时,未提供数据库名称。查询语句需要指定要使用的数据库。

curl -XPOST 'http://localhost:8086/query' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-u username:password \
--data-urlencode 'q=SELECT * FROM measurement_name WHERE time > now() - 1h' \
--data-urlencode 'db=your_database_name'

  在上述示例中,将 your_database_name 替换为实际的数据库名称,并确保提供了正确的数据库名称。

6.使用postman请求query

  -u 需要转换为 Authorization 的请求头,使用python的base64计算的具体方法为:

import base64

username = 'admin'
password = 'password' credentials = username + ':' + password
base64_credentials = base64.b64encode(credentials.encode()).decode() authorization = 'Basic ' + base64_credentials
print(authorization)

  根据 生成的 Authorization 配置到  postman 中。

  将 查询 的sql,db配置到查询的body

  header部分:

  body部分

参考:

  https://docs.influxdata.com/influxdb/v1.7/tools/api/   

influxdb 端点使用http进行sql查询,写数据的更多相关文章

  1. 视图查询的数据和sql查询的数据不一样

    视图查询的数据和sql查询的数据不一样. 手动刷新视图 exec sp_refreshview  视图名称

  2. sql 查询重复数据,删除重复数据,过滤重复数据

    select * from (SELECT titleid,count(titleid) c FROM [DragonGuoShi].[dbo].[ArticleInfo] group by titl ...

  3. ORACLE和SQL查询库数据量

    ORACLE根据账号查询每张表数据量: select t.table_name,t.num_rows from user_tables t ORDER BY NUM_ROWS DESC; SQL SE ...

  4. 关于SQL查询某年数据 和DATEPART 函数的使用

    数据库查询某年数据(sql server)select *from 表名 where YEAR(存时间的字段名) =某年select *from News where YEAR(addDate) =2 ...

  5. PL/SQL 查询的数据出现乱码

    解决方法: 1.首先在查询出Oracle数据库的字符集. select userenv('language') from dual; 2.新建系统变量 NLS_LANG,变量值为第一步查询出来的字符集 ...

  6. [sql查询] 重复数据只取一条

    SELECT * FROM tab_init WHERE id IN ( --根据Data分类获取数据最小ID列表 select max(id) from tab_init group by a,b ...

  7. sql查询当天数据

    向数据库中添加日期 MS SQL SERVER: NSERT into student(studentid,time1)values('15',getdate()); MY SQLinsert int ...

  8. SQL查询遍历数据方法一 [ 临时表 + While循环]

    以下以SQL Server 2000中的NorthWind数据库中的Customers表为例, 用 临时表 + While循环 的方法, 对Customers表中的CompanyName列进行遍历 c ...

  9. 工作 巧遇 sql 查询 一组数据中 最新的一条

    SELECT * FROM rsl a, (SELECT CODE, max(time_key) time_key FROM rsl GROUP BY CODE ) b WHERE a. CODE = ...

  10. sql 查询大数据 常用 50列优化

    大数据量的问题是很多面试笔试中经常出现的问题,比如baidu google 腾讯 这样的一些涉及到海量数据的公司经常会问到. 下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能 ...

随机推荐

  1. 文心一言 VS 讯飞星火 VS chatgpt (156)-- 算法导论12.3 3题

    三.用go语言,对于给定的 n 个数的集合,可以通过先构造包含这些数据的一棵二叉搜索树(反复使用TREE-INSERT 逐个插入这些数),然后按中序遍历输出这些数的方法,来对它们排序.这个排序算法的最 ...

  2. oracle12c静默安装

    oracle12c 静默安装 先决条件 ● 至少 1 GB RAM 用于 Oracle 数据库安装.建议使用 2 GB 内存. ● 至少 8 GB RAM 用于 Oracle Grid Infrast ...

  3. DHorse v1.5.0 发布,基于 k8s 的发布平台

    版本说明 新增特性 支持同一机器部署多个DHorse服务: 支持Next..NET应用部署: 优化Node.Nuxt应用构建和部署的性能: 默认使用fabric8客户端与k8s集群交互,可以通过指定参 ...

  4. 面试官:说说MVCC的执行原理?

    MVCC(Multi-Version Concurrency Control)是一种并发控制机制,用于解决数据库并发访问中,数据一致性问题.它通过在读写操作期间保存多个数据版本,以提供并发事务间的隔离 ...

  5. JAVAAPI实现血缘关系Rest推送到DataHub V0.12.1版本

    DataHub 更青睐于PythonAPI对血缘与元数据操作 虽然开源源码都有Java示例和Python示例:但是这个API示例数量简直是1:100的差距!!不知为何,项目使用Java编写,示例推送偏 ...

  6. 构建健康游戏环境:DFA算法在敏感词过滤的应用

    现在的游戏有敏感词检测这一点,相信大家也不陌生了,不管是聊天,起名,签名还是简介,只要是能让玩家手动输入的地方,一定少不了敏感词识别,至于识别之后是拒绝修改还是星号替换,这个就各有各的做法了,但是绕不 ...

  7. k8s集群Node节点管理:节点信息查看及节点label标签管理

    k8s集群Node节点管理:节点信息查看及节点label标签管理 Kubernetes集群Node管理 一.查看集群信息 [root@k8s-master1 ~]# kubectl cluster-i ...

  8. 宝塔面板如何用一IP不同端口创建不同的网站(“您添加的站点已存在”)

    问题描述 玩宝塔面板的时候,一开始没有云服务器,需要在本地虚拟机里搭建各种网站,想在本地服务器下搭建多个站点,但是总会遇到"您添加的站点已存在"这个现象. 问题原因及解决办法 出现 ...

  9. 最基本的SpringCloud的搭建

    对于springcloud而言,模块是按业务进行区分的: 父工程 依赖 <parent> <groupId>org.springframework.boot</group ...

  10. Python中的@abstractmethod

      @abstractmethod 是 Python 中 abc 模块(Abstract Base Classes)提供的一个装饰器,用于声明抽象方法.抽象方法是指在抽象类中声明但没有提供具体实现的方 ...