package com.yaohp.influxdb;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import junit.framework.Assert;
import org.influxdb.InfluxDB;
import org.influxdb.dto.QueryResult;
import org.influxdb.dto.QueryResult.Result;
import org.influxdb.dto.QueryResult.Series;
import org.junit.Before;
import org.junit.Test;
import org.springframework.beans.BeanWrapperImpl;
import com.yaohp.influxdb.CodeInfo;
public class InfluxDBUtils {
private InfluxDBConnect influxDB;
private String username = "admin";//用户名
private String password = "admin";//密码
private String openurl = "http://127.0.0.1:8086";//连接地址
private String database = "mocdb";//数据库
private String measurement = "testTable";
@Before
public void setUp(){
//创建 连接
influxDB = new InfluxDBConnect(username, password, openurl, database);
try {
influxDB.influxDbBuild();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
influxDB.createRetentionPolicy();
// influxDB.deleteDB(database);
// influxDB.createDB(database);
}
@Test
public void Insert(){//测试数据插入
Map<String, String> tags = new HashMap<String, String>();
Map<String, Object> fields = new HashMap<String, Object>();
List<CodeInfo> list = new ArrayList<CodeInfo>();
CodeInfo info1 = new CodeInfo();
info1.setId(1L);
info1.setName("BANKS");
info1.setCode("ABC");
info1.setDescr("中国农业银行");
info1.setDescrE("ABC");
info1.setCreatedBy("system");
info1.setCreatedAt(new Date().getTime());
CodeInfo info2 = new CodeInfo();
info2.setId(2L);
info2.setName("BANKS");
info2.setCode("CCB");
info2.setDescr("中国建设银行");
info2.setDescrE("CCB");
info2.setCreatedBy("system");
info2.setCreatedAt(new Date().getTime());
list.add(info1);
list.add(info2);
for(CodeInfo info : list){
tags.put("TAG_CODE", info.getCode());
tags.put("TAG_NAME", info.getName());
fields.put("ID", info.getId());
fields.put("NAME", info.getName());
fields.put("CODE", info.getCode());
fields.put("DESCR", info.getDescr());
fields.put("DESCR_E", info.getDescrE());
fields.put("CREATED_BY", info.getCreatedBy());
fields.put("CREATED_AT", info.getCreatedAt());
influxDB.insert(measurement, tags, fields);
}
}
@Test
public void Query(){//测试数据查询
String command = "select * from sys_code";
QueryResult results = influxDB.query(command);
if(results.getResults() == null){
return;
}
List<CodeInfo> lists = new ArrayList<CodeInfo>();
for (Result result : results.getResults()) {
List<Series> series= result.getSeries();
for (Series serie : series) {
// Map<String, String> tags = serie.getTags();
List<List<Object>> values = serie.getValues();
List<String> columns = serie.getColumns();
lists.addAll(getQueryData(columns, values));
}
}
Assert.assertTrue((!lists.isEmpty()));
//Assert.assertEquals(2, lists.size());
}
@Test
public void QueryWhere(){//tag 列名 区分大小写
String command = "select * from sys_code where TAG_CODE='ABC'";
QueryResult results = influxDB.query(command);
if(results.getResults() == null){
return;
}
List<CodeInfo> lists = new ArrayList<CodeInfo>();
for (Result result : results.getResults()) {
List<Series> series= result.getSeries();
for (Series serie : series) {
List<List<Object>> values = serie.getValues();
List<String> columns = serie.getColumns();
lists.addAll(getQueryData(columns, values));
}
}
Assert.assertTrue((!lists.isEmpty()));
Assert.assertEquals(1, lists.size());
CodeInfo info = lists.get(0);
Assert.assertEquals(info.getCode(), "ABC");
}
@Test
public void deletMeasurementData(){
String command = "delete from sys_code where TAG_CODE='ABC'";
String err = influxDB.deleteMeasurementData(command);
Assert.assertNull(err);
}
/***整理列名、行数据***/
private List<CodeInfo> getQueryData(List<String> columns, List<List<Object>> values){
List<CodeInfo> lists = new ArrayList<CodeInfo>();
for (List<Object> list : values) {
CodeInfo info = new CodeInfo();
BeanWrapperImpl bean = new BeanWrapperImpl(info);
for(int i=0; i< list.size(); i++){
String propertyName = setColumns(columns.get(i));//字段名
Object value = list.get(i);//相应字段值
bean.setPropertyValue(propertyName, value);
}
lists.add(info);
}
return lists;
}
/***转义字段***/
private String setColumns(String column){
String[] cols = column.split("_");
StringBuffer sb = new StringBuffer();
for(int i=0; i< cols.length; i++){
String col = cols[i].toLowerCase();
if(i != 0){
String start = col.substring(0, 1).toUpperCase();
String end = col.substring(1).toLowerCase();
col = start + end;
}
sb.append(col);
}
return sb.toString();
}
}
influxdb demo
需积分: 17 77 浏览量
2017-11-22
15:08:24
上传
评论
收藏 2.5MB TGZ 举报
steven_yao001
- 粉丝: 17
- 资源: 4
最新资源
- mmqrcode1714153659780.png
- Screenshot_2024-04-27-06-08-58-486_com.baidu.xin.aiqicha.jpg
- 基于Javaweb+Tomcat+MySQL的大学生公寓管理系统+sql文件.zip
- 实训作业基于javaweb的订单管理系统源码+数据库+实训报告.zip
- 多机调度问题贪心算法基于最小堆和贪心算法求解多机调度问题.zip
- 基于同态加密技术的匿名电子投票系统源码.zip
- Pyqt5项目框架-PyQt项目开发实践
- 基于C通过MQTT的智能农业大棚管理系统(本科毕业设计)
- python+CNN的网络入侵检测算法源码.zip
- js 实现记住密码功能 js.cookie.min.js
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈