InfluxDB是一款用Go语言编写的开源分布式时序、事件和指标数据库,无需外部依赖。该数据库现在主要用于存储涉及大量的时间戳数据,如DevOps监控数据,APP metrics, loT传感器数据和实时分析数据。
InfluxDB在Windows下的安装与使用可参见:https://blog.csdn.net/m0_37317159/article/details/80456035
InfluxDB的数据写入主要采用Http的API接口
curl -i -XPOST "http://localhost:8086/write?db=mydb" --data-binary @bridges.txt
要注意的是:
1.官网上介绍用的是'单引号,但是会报错,在windows平台下,curl的参数应该使用"双引号。
2.bridges.txt文件的格式,每一行的结尾应采用unix的换行符,否则可能报不正确的timestamp的错误。
3.bridges.txt不能太大,具体多少没有看到相关文档,我的104M的文件,报错文件太大。
4.bridges.txt文件的格式如下,windFarm是measurment,turbId是tag key,giWecRunContion等是field key,最后的1533022504000000000是timestamp,单位是ns纳秒(10^-9 s)。
windFarm,turbId="10004110" giWecRunContion="3",giFaultInformation="0",grRotorSpeedPDM="10.994" 1533022504000000000
我写了一个bat脚本实现大量数据的逐条导入,内容如下:
delims=@是避免for去默认用空格去分隔数据(data.txt中有空格但是没有@符号),
脚本的作用是将data.txt中的每一行数据,用curl 发送给influxdb,存储到db20053数据库中。
将下面的代码保存成insert.bat,执行即可。如果要在命令窗口中执行,需要将%%i,改成%i。
for /f "delims=@" %%i in (data.txt) do curl -i -XPOST "http://localhost:8086/write?db=db20053" --data-binary "%%i"
data.txt中的内容是一行一行的数据原文件中有127个数据点(此处只为示例)。
windFarm,turbId="10234110" giWecRunContion="3",giFaultInformation="0",grRotorSpeedPDM="10.994" 1533022504000000000
经测试,我的data.txt一行有127个数据点,一共39487行,平均导入速度是18行/秒,data.txt有104M,导入花了36分钟。
CSV格式的data.txt为18.9M,插入influxDB后,数据库容量增加6M,influx的压缩比大约是30%。