如何在Matlab中访问InfluxDB 2.1数据 现有v1.7客户端不兼容怎么办
Matlab 2021访问InfluxDB 2.1的可行方案
你无需完全替换现有v1.7客户端,两种方案可按需选择:
方案1:启用InfluxDB 2.1的v1兼容接口,复用现有客户端
该方案不需要修改Matlab端的现有代码逻辑,仅需要在InfluxDB服务端做映射配置:
- 第一步:在InfluxDB 2.1服务端执行v1认证映射命令,将v1版本的database、用户名密码对应到v2版本的bucket、组织权限,命令如下:
influx v1 auth create --org-id <你的组织ID> --username <自定义v1用户名> --password <自定义v1密码> --read-bucket <对应bucket的ID> --write-bucket <对应bucket的ID> - 第二步:原有Matlab v1.7 API的调用逻辑无需修改,原database参数直接填写映射对应的bucket名称即可,认证还是使用你自定义的v1用户名和密码,接口路径、请求格式都保持原有逻辑不变。
方案2:调用InfluxDB v2原生API(支持Flux查询等新特性)
如果需要使用InfluxDB 2.x的新增特性,可以直接用Matlab内置的HTTP请求工具调用原生v2接口,不需要依赖第三方库:
- 认证方式改为Token认证,所有请求需要在Header中携带
Authorization: Token <你的访问令牌> - 示例代码如下:
% 基础配置 influx_addr = "http://你的InfluxDB服务地址:8086"; access_token = "你的API访问令牌"; org_name = "你的组织名称"; target_bucket = "要访问的bucket名称"; % 构造请求配置 req_opts = weboptions(... 'RequestMethod','post',... 'HeaderFields',{... 'Authorization', strcat("Token ", access_token),... 'Content-Type','application/vnd.flux'... },... 'Timeout',15... ); % 构造Flux查询语句,示例为查询过去1小时的cpu空闲率数据 flux_sql = strcat(... 'from(bucket:"', target_bucket, '")',... '|> range(start: -1h)',... '|> filter(fn: (r) => r._measurement == "cpu" and r._field == "usage_idle")' ); % 发起查询请求 query_url = strcat(influx_addr, "/api/v2/query?org=", org_name); query_result = webread(query_url, flux_sql, req_opts);
- 返回结果为标准CSV格式,可直接用Matlab内置的
readtable函数解析结构化数据。
组件升级说明
- 如果选择方案1,完全不需要升级现有Matlab端的任何组件,仅需要在InfluxDB服务端完成映射配置即可正常使用。
- 如果选择方案2,也不需要额外安装第三方组件,直接调用Matlab 2021内置的HTTP相关函数即可实现。
内容的提问来源于stack exchange,提问作者Lysander
相关产品推荐
相关产品推荐

