InfluxDB数据批量导入(bat方式)

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 存储到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中的内容是一行一行的数据。

经测试,我的data.txt一行有127个数据点,一共39487行,平均导入速度是18行/秒,data.txt有104M,导入花了36分钟。

一个空的database大小为32M,但是里面没有内容,用winrar压缩后,只有18K,data.txt中的内容插入后,db20053目录显示为43.9M,增加6M,可以看出influxDB对数据的压缩还是比较可以的。

CSV格式的data.txt为18.9M,插入influxDB后,增加6M,压缩比大约是30%。

猜你喜欢

转载自blog.csdn.net/v6543210/article/details/81318832