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 发送给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%。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路边闲人2

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值