java influxdb_JAVA操作InfluxDB的一个Demo

这篇博客介绍了如何使用Java连接并操作InfluxDB数据库,包括建立连接、创建保留策略、查询数据、插入数据、删除数据、创建和删除数据库以及批量导入数据的步骤和方法。
摘要由CSDN通过智能技术生成

packagecom.test.repository.utils;importcom.test.domain.entry.bo.common.InfluxDbRow;importorg.influxdb.InfluxDB;importorg.influxdb.InfluxDBFactory;importorg.influxdb.dto.BatchPoints;importorg.influxdb.dto.Point;importorg.influxdb.dto.Query;importorg.influxdb.dto.QueryResult;importjava.util.List;importjava.util.concurrent.TimeUnit;

public classInfluxDBConnect {privateString username;privateString password;privateString url;privateString database;private intretentionDay;private intreplicationCount;privateInfluxDB influxDB;public InfluxDBConnect(String username, String password, String url, String database, int retentionDay, intreplicationCount) {this.username =username;this.password =password;this.url =url;this.database =database;this.retentionDay =retentionDay;this.replicationCount =replicationCount;

}/**连接时序数据库;获得InfluxDB **/

voidconnection() {if (influxDB == null) {

influxDB=InfluxDBFactory.connect(url, username, password);

}

}/*** 设置数据保存策略

* defalut 策略名 /database 数据库名/ 30d 数据保存时限30天/ 1 副本个数为1/ 结尾DEFAULT 表示 设为默认的策略*/

voidcreateRetentionPolicy() {

String command= String.format("CREATE RETENTION POLICY \"%s\" ON \"%s\" DURATION %s REPLICATION %s DEFAULT","default", database, retentionDay + "d", replicationCount);this.query(command);

}/*** 查询

*@paramcommand 查询语句

*@return查询结果*/QueryResult query(String command) {return influxDB.query(newQuery(command, database));

}/*** 插入*/

public voidinsert(InfluxDbRow influxDbRow) {if (influxDbRow == null) {return;

}

Point.Builder builder=Point.measurement(influxDbRow.getMeasurement());

builder.tag(influxDbRow.getTags());

builder.fields(influxDbRow.getFields());if (influxDbRow.getTimeSecond() != null) {

builder.time(influxDbRow.getTimeSecond(), TimeUnit.SECONDS);

}

influxDB.write(database,"default", builder.build());

}/*** 删除

*@paramcommand 删除语句

*@return返回错误信息*/

publicString deleteMeasurementData(String command) {

QueryResult result= influxDB.query(newQuery(command, database));returnresult.getError();

}/*** 创建数据库

*@paramdbName 库名称*/

public voidcreateDB(String dbName) {this.query("create database " +dbName);

}/*** 删除数据库

*@paramdbName*/

public voiddeleteDB(String dbName) {this.query("drop database " +dbName);

}public voidclose() {this.influxDB.close();

}/*** 指导导入

*@paraminfluxDbRows 行记录*/

public void batchPointsImport(ListinfluxDbRows) {if (influxDbRows == null || influxDbRows.size() == 0) {return;

}

BatchPoints batchPoints= BatchPoints.database(this.database).retentionPolicy("default").build();for(InfluxDbRow influxDbRow : influxDbRows) {if (influxDbRow.getTags().size() + influxDbRow.getFields().size() == 0) continue;

Point.Builder builder=Point.measurement(influxDbRow.getMeasurement());

builder.tag(influxDbRow.getTags());

builder.fields(influxDbRow.getFields());if (influxDbRow.getTimeSecond() != null) {

builder.time(influxDbRow.getTimeSecond(), TimeUnit.SECONDS);

}else{

builder.time(System.currentTimeMillis()/ 1000, TimeUnit.SECONDS);

}

batchPoints.point(builder.build());

}

influxDB.write(batchPoints);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值