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