java influx DB工具类
配置
application-properties:
spring.influxdb.url=${influxdb_host:127.0.0.1}
spring.influxdb.port=${influxdb_port:8086}
spring.influxdb.username=${influxdb_username:root}
spring.influxdb.password=${influxdb_password:root}
spring.influxdb.database=${influxdb_database:test}
InfluxDBConfig
import com....utils.InfluxDBConnect;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; @ConfigurationProperties("application.properties")
@Configuration
public class InfluxDBConfig { @Value("${spring.influxdb.username}")
private String username;
@Value("${spring.influxdb.password}")
private String password;
@Value("${spring.influxdb.url}")
private String url;
@Value("${spring.influxdb.port}")
private String port;
@Value("${spring.influxdb.database}")
private String database; @Bean
public InfluxDBConnect getInfluxDBConnect(){
InfluxDBConnect influxDB = new InfluxDBConnect(username, password, "http://"+url+":"+port, database); influxDB.influxDbBuild(); influxDB.createRetentionPolicy();
return influxDB;
} }
工具类
influxDBConnect类:
import lombok.Data;
import org.influxdb.InfluxDB;
import org.influxdb.InfluxDBFactory;
import org.influxdb.dto.BatchPoints;
import org.influxdb.dto.Point;
import org.influxdb.dto.Query;
import org.influxdb.dto.QueryResult; import java.util.Map;
import java.util.concurrent.TimeUnit; @Data
public class InfluxDBConnect {
private String username;// 用户名
private String password;// 密码
private String openurl;// 连接地址
private String database;// 数据库 private InfluxDB influxDB; public InfluxDBConnect(String username, String password, String openurl, String database) {
this.username = username;
this.password = password;
this.openurl = openurl;
this.database = database;
} /** 连接时序数据库;获得InfluxDB **/
public InfluxDB influxDbBuild() {
if (influxDB == null) {
influxDB = InfluxDBFactory.connect(openurl, username, password);
influxDB.createDatabase(database); }
return influxDB;
} /**
* 设置数据保存策略 defalut 策略名 /database 数据库名/ 30d 数据保存时限30天/ 1 副本个数为1/ 结尾DEFAULT
* 表示 设为默认的策略
*/
public void createRetentionPolicy() {
String command = String.format("CREATE RETENTION POLICY \"%s\" ON \"%s\" DURATION %s REPLICATION %s DEFAULT",
"defalut", database, "7200d", 1);
this.query(command);
} /**
* 查询
*
* @param command 查询语句
* @return
*/
public QueryResult query(String command) {
return influxDB.query(new Query(command, database));
}
public QueryResult query(String command, TimeUnit unit) {
return influxDB.query(new Query(command, database),unit);
} /**
* 插入
* @param measurement 表
* @param tags 标签
* @param fields 字段
*/
public void insert(String measurement, Map<String, String> tags, Map<String, Object> fields, long time) {
Point.Builder builder = Point.measurement(measurement);
builder.time(time, TimeUnit.MILLISECONDS);
builder.tag(tags);
builder.fields(fields);
influxDB.write(database, "", builder.build());
} /**
* 插入
* @param measurement 表
* @param tags 标签
* @param fields 字段
*/
public void insert(String measurement, Map<String, String> tags, Map<String, Object> fields){
Point.Builder builder = Point.measurement(measurement);
builder.tag(tags);
builder.fields(fields); influxDB.write(database, "", builder.build());
} /**
* 插入
* @param batchPoints 批量插入
*/
public void batchInsert(BatchPoints batchPoints){
influxDB.write(batchPoints);
} /**
* 删除
* @param command 删除语句
* @return 返回错误信息
*/
public String deleteMeasurementData(String command) {
QueryResult result = influxDB.query(new Query(command, database));
return result.getError();
} /**
* 创建数据库
* @param dbName
*/
public void createDB(String dbName) {
influxDB.createDatabase(dbName);
} /**
* 删除数据库
*
* @param dbName
*/
public void deleteDB(String dbName) {
influxDB.deleteDatabase(dbName);
} }
查询返回值包的层数很多,可以预处理
import lombok.extern.slf4j.Slf4j;
import org.influxdb.dto.QueryResult; import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit; @Slf4j
public class InfluxdbUtil { public static List<Object> queryInfluxdb(String query_sql, String table_type, InfluxDBConnect influxDB) {
long starttime = System.currentTimeMillis();
QueryResult result = influxDB.query(query_sql.toString(), TimeUnit.MILLISECONDS);
long endtime = System.currentTimeMillis(); List<Object> influx_data_list = getInfluxData(result.getResults().get(0), table_type); return influx_data_list; }
public static List<Object> getInfluxData(QueryResult.Result result, String table_type) {
List<Object> influx_data_list = null;
if (null != result) {
influx_data_list = new ArrayList<>(); List<QueryResult.Series> series = result.getSeries();
if (null != series && series.size() > 0) {
for (QueryResult.Series serie : series) {
List<List<Object>> values = serie.getValues(); List<Object> result_list = getInfluxDataAndBuild(values, serie, table_type); influx_data_list.addAll(result_list);
}
}
} return influx_data_list;
} public static List<Object> getInfluxDataAndBuild(List<List<Object>> values, QueryResult.Series
serie, String table_type) {
List<Object> influx_data_list = new ArrayList<>();
List<String> influx_cloumns = serie.getColumns();
Map<String, String> influx_tags = serie.getTags(); Map<String, Object> build_maps; if (values.size() > 0) { for (int i = 0; i < values.size(); i++) {
build_maps = new LinkedHashMap<>();
if (null != influx_tags) { for (Map.Entry<String, String> entry : influx_tags.entrySet()) {
String entry_key = entry.getKey();
if (entry_key.contains("tag_")) {
entry_key = entry_key.substring(4);
}
build_maps.put(entry_key, entry.getValue());
}
}
Object[] influx_Obj = values.get(i).toArray(); for (int j = 0; j < influx_Obj.length; j++) {
String build_maps_key = influx_cloumns.get(j);
if (build_maps_key.equals("time")) {
if (table_type.equals("normal")) {
BigDecimal bd = new BigDecimal(String.valueOf(influx_Obj[j]));
build_maps.put("timestamp", bd.toPlainString());
} else if (table_type.equals("polymerize")) {
// build_maps.put("timestamp", DateUtil.dateToStampAndAddMinute(String.valueOf(influx_Obj[j])));
}
} else {
if (build_maps_key.contains("tag_")) {
build_maps_key = build_maps_key.substring(4);
} build_maps.put(build_maps_key, influx_Obj[j]);
}
} influx_data_list.add(build_maps);
}
}
return influx_data_list;
}
}
java influx DB工具类的更多相关文章
- HttpTool.java(在java tool util工具类中已存在) 暂保留
HttpTool.java 该类为java源生态的http 请求工具,不依赖第三方jar包 ,即插即用. package kingtool; import java.io.BufferedReader ...
- java文件处理工具类
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedRead ...
- java格式处理工具类
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOExceptio ...
- Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类
Java 敏感词过滤,Java 敏感词替换,Java 敏感词工具类 =========================== ©Copyright 蕃薯耀 2017年9月25日 http://www ...
- Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类
Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ©Copyright 蕃薯耀 20 ...
- 使用java的Calendar工具类获取到本月的第一天起始时间和最后一天结束时间。
1.使用java的Calendar工具类获取到本月的第一天起始时间和最后一天结束时间. package com.fline.aic.utils; import java.text.DateFormat ...
- JAVA 8 日期工具类
JAVA 8 日期工具类 主题描述 JAVA中日期时间的历史 代码成果 主题描述 JAVA的日期时间一直比较混乱,本来以为joda会是巅峰,但是JAVA 8改变了我的思想.但是即便在JAVA 8面前, ...
- JavaSE-基础语法(二)-系统类(java.lang.*)和工具类(java.util.*)
系统类(java.lang.*)和工具类(java.util.*) 一.系统类(java.lang.*) 这个包下包含java语言的核心类,如String.Math.System和Thread类等,使 ...
- java 解析excel工具类
java 解析excel工具类 CreateTime--2018年3月5日16:48:08 Author:Marydon ReadExcelUtils.java import java.io.Fi ...
随机推荐
- 网关 apache APISIX
网关 apache - 国内版 Binghttps://cn.bing.com/search?q=%E7%BD%91%E5%85%B3+apache&qs=n&form=QBRE&am ...
- [转]浅谈HTTP中GET、POST用法以及它们的区别
HTTP定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符.我们可以这样认为: 一个URL地址,它用于描述一个网络上的资源,而HTT ...
- 将C++资源文件读取出来
HRSRC hResource = FindResource(GetModuleHandle(NULL), MAKEINTRESOURCE(IDR_CALC), TEXT(&q ...
- 报错:org.apache.sqoop.common.SqoopException Message: CLIENT_0001:Server has returned exception NoClassDefFoundError: org/codehaus/jackson/map/JsonMappingException
报错背景: CDH集成sqoop2服务之后,创建好link和job之后,执行job的时候报错. 报错现象: sqoop:> start job -j Exception has occurred ...
- C#操作Access时Parameters集合的使用方法(转)
按照C#操作Sql Server数据库的方式是不一样的,使用时发现占位符数据会混乱. 查阅相关资料及测试后,总结出这样一套使用方法. 方法: public bool TsqlExecute(strin ...
- MVC ViewBag和ViewData的使用
ViewBag public ActionResult About() { ViewBag.Message = "Your application description page.&quo ...
- Swift4.0复习闭包
1.闭包的定义和调用: _ = { (param1: Int, param2: Float, param3: Void) -> return_type in // 闭包执行代码 /* ... * ...
- 单机prometheus vs 集群kube-prometheus+prometheus-operator
prometheus 组件: node-exporter:9100端口 https://segmentfault.com/a/1190000017959127
- [转]gcc的__builtin_函数介绍
链接地址:https://blog.csdn.net/jasonchen_gbd/article/details/44948523
- Ubuntu18.04下LAMP环境搭建
可以安装安装Xampp,Xampp是一个集成的LAMP开发环境. 但是这只是对于一个刚安装好的系统来说的,但是很有可能我的电脑上面已经安装过Apache,或者安装过MySQL,或者安装过PHP了,或者 ...