【InfluxDB使用】Windows版本SpringBoot使用influxDB

1、Windows版本下载及可视化,参考如下(默认的账号密码都是admin)
https://blog.csdn.net/weixin_40973127/article/details/117438540
基本使用手册
https://www.hellodemos.com/hello-influxdb/influxdb-influx-group.html
虽然和SQL类似,但是实际应用的时候还是会遇到很多不同地方,比如没有between and 时区查询出来也差8个小时等,都可以具体问题具体搜索

2、Java使用工具类,参考如下
https://blog.csdn.net/x541211190/article/details/83216589
下边是我修改的其中一个方法,把插入的时候修正了+8个小时

    /**
     * 插入单条数据写法1
     *
     * @param measurement
     * @param trueReprotTime 
     * @param nh 
     * @param reportTime 
     * @param lampId 
     */
    public void insertOne01(String measurement, Long lampId, Date reportTime, String nh, Date trueReprotTime) {
        //构建
        Point.Builder builder = Point.measurement(measurement);
       
        //可指定时间戳
        ZoneId zoneId = ZoneId.systemDefault();
        LocalDateTime localDateTime = LocalDateTime.ofInstant(reportTime.toInstant(), zoneId);
        builder.time(localDateTime.plusHours(8)
                .toInstant(ZoneOffset.of("+8"))
                .toEpochMilli(), TimeUnit.MILLISECONDS); 
        //tag属性只能存储String类型 -索引列
        builder.tag("lampid",lampId.toString());
        builder.tag("reportTime",String.valueOf(reportTime.getTime()));
        //设置field
        builder.addField("trueReprotTime",trueReprotTime.getTime());
        builder.addField("nh",nh);
        influxDB.write(builder.build());
    }

3、MYSQL数据库迁移部分数据至Influxdb,写个python

import datetime
import random
import time
from influxdb import InfluxDBClient
import pymysql  # 引入mysql包
import pandas as pd

db = pymysql.connect(host="localhost", user="root", password="xxxxx", db="parking", port=3306)  # 连接mysql
cur = db.cursor()  # 获取游标
sql = "select lamp_id,report_time,truereport_time,sum_percent_seconds  from la_lamp_percent_seconds"
cur.execute(sql)  # 执行sql
assert isinstance(cur, object)
results = cur.fetchall()  # 获取所有数据

host = '127.0.0.1'
port = 8086
user = 'admin'
password = 'xxxxxx'
dbname = 'mydb'
# influxdb 数据连接
n = 0
start = datetime.datetime.now()
conn_db = InfluxDBClient(host, port, user, password, dbname)  # 连接influxdb
for row in results:  # 循环插入数据
    lamp_id = row[0]
    report_time = row[1]
    truereport_time = row[2]
    sum_percent_seconds = row[3]
    shijianchuo_report_time=int(round((pd.to_datetime(report_time, utc=True, infer_datetime_format=True).timestamp()-28800) * 1000))
    shijianchuo_truereport_time=int(round((pd.to_datetime(truereport_time, utc=True, infer_datetime_format=True).timestamp()-28800) * 1000))
   #  print(int(round((pd.to_datetime(report_time, utc=True, infer_datetime_format=True).timestamp()-28800) * 1000)))
    n += 1
    print("条数:", n)
    json_body = [
        {
            "measurement": "per",  # 表名
            "tags": {
                "lampid": lamp_id,
                "reportTime": shijianchuo_report_time
            },
            "time": report_time,
            "fields": {
                "trueReportTime": shijianchuo_truereport_time,
                "nh": float(sum_percent_seconds)
            }
        }
    ]  # 插入influxdb格式
    conn_db.write_points(json_body)  # 写入数据,同时创建表
conn_db.close()  # 关闭influxdb连接
db.close()  # 管理mysql游标

如遇问题,参考如下
https://blog.csdn.net/qq_41767116/article/details/119988991

你可能感兴趣的:(spring,boot,python,后端)