InfluxDBConnect java使用

本文介绍了一个用于连接和操作InfluxDB数据库的Java类,包括创建数据库、插入单条或多条数据,以及从数据库中获取并解析数据的方法。通过具体的代码示例,展示了如何使用RestTemplate进行HTTP请求,实现与InfluxDB的交互。

InfluxDBConnect java使用

package ssm.spring.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.influxdb.dto.QueryResult;
import org.influxdb.dto.QueryResult.Result;
import org.influxdb.dto.QueryResult.Series;
import org.springframework.beans.BeanWrapperImpl;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;



public class InfluxDBConnect {
	Util util = new Util();
	public static void main(String[] args){


		InfluxDBConnect    idbc =   new InfluxDBConnect();

		System.out.println( idbc.getTest());

	}
	/**
	 * 创建数据库
	 */
	public void createDatabase(){
		String url="http://localhost:8086/query";

		MultiValueMap<String,String> postParameter=new LinkedMultiValueMap<>();

		postParameter.add("q","CREATE DATABASE mydb1");

		RestTemplate restTemplate=new RestTemplate();

		restTemplate.postForObject(url,postParameter,Object.class);

	}
	/**
	 * 单条数据插入
	 * 插入数据库格式:"表名,标记 数据 数据"
	 */
	public void write(String pointValue){
		String url="http://localhost:8086/write?db=mydb1";

		//  String pointValue=" payment,device=mobile,product=Notepad,method=credit billed=33,licenses=3i ";

		RestTemplate restTemplate=new RestTemplate();

		restTemplate.postForObject(url,pointValue,Object.class);
	}
	/**
	 * 多条数据处理
	 */
	public void writeMultiplePoints(){

		String url="http://localhost:8086/write?db=mydb1";

		//  String pointValue="cpu_load_short,host=server02  num=0.67\ncpu_load_short,host=server02,region=us-west value=0.55 1422568543702900257\ncpu_load_short,direction=in,host=server01,region=us-west value=2.0 1422568543702900257";
		String pointValue="my_test_table,host=server02  num=0.67\nmy_test_table,host=server02  num=0.81\ncpu_load_short,host=server02,region=us-west value=0.55 1422568543702900257\ncpu_load_short,direction=in,host=server01,region=us-west value=2.0 1422568543702900257";

		RestTemplate restTemplate=new RestTemplate();

		restTemplate.postForObject(url,pointValue,Object.class);
	}

	//拼接字符
	public String StringBuilder(){

		StringBuilder sb=new StringBuilder();
		sb.append("cpu_load_short,host=server02 value=0.67\\n");
		sb.append("cpu_load_short,host=server02,region=us-west value=0.55\\n");
		sb.append("cpu_load_short,direction=in,host=server01,region=us-west value=2.0\\n");
		String str=sb.toString();


		return str;
	}

	public List<Map<String,Object>> getTest(){
		RestTemplate restTemplate=new RestTemplate();

		String url="http://localhost:8086/query?db=mydb1&q= select * from cpu_load_short";
		// String url1=  util.getProperties("userpassword");
		QueryResult results=restTemplate.getForObject(url,QueryResult.class);
		if(results.getResults() == null){
			return null;
		}
		List<String> columns =null;
		List<List<Object>>  values = null;
		for (Result result : results.getResults()) {

			List<Series> series= result.getSeries();
			for (Series serie : series) {
				//Map<String, String> tags = serie.getTags();
				values = serie.getValues();
				columns = serie.getColumns();
				System.out.print(values.get(0).get(2)+"  ");
				System.out.print(columns.get(2)+"   ");
			}
		}
		List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
		
		for(int i=0;i<values.size();i++) {
			Map<String,Object> maps = new HashMap<>();
			for(int j=0;j<columns.size();j++) {
				maps.put(columns.get(j), values.get(i).get(j));
			}
			list.add(maps);
		}
	//	System.out.println("columns:"+columns);
	//	System.out.println("values:"+values);
	//	System.out.println("columns:"+columns.size()+"  :  "+"values:"+values.size());
	//	System.out.println();
		return list;
	}

	private List<Map<String,Object>> getQueryData(List<String> columns, List<List<Object>>  values){
		List<Map<String,Object>> lists = new ArrayList<Map<String,Object>>();

		for (List<Object> list : values) {
			Map<String,Object> info = new HashMap<>();
			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();
	}


}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值