InfluxDB由文件导入大批量数据

在开发中,面对InfluxDB大量数据导入问题,由于HTTP写入存在限制,本文提出两种解决方案:一是通过文件流分批导入,适用于小体积文件;二是编写shell脚本直接导入文件,简化操作,提高效率。具体实现包括设定batch大小和使用特定shell脚本来完成数据导入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发中遇到了需要写入大量数据到InfluxDB measurement的问题,使用HTTP写入有Header的大小限制,且速度很慢,连接中出现不稳定的情况直接报废所有导入操作。针对这种情况找到了两种解决方案:一是通过将数据文件通过batch的方式批量导入到数据库;二是直接将文件导入到InfluxDB中。

1. 将文件使用文件流的方式分为多个batch写入数据库,这种方案依然只适合较小体积的文件,写入速度依然较慢,具体方法可以参考以下代码:

CHUNKSIZE = 50  // 可以测试自己的接口单个batch的容量为多少进行调整

// 该函数用于js内的大文件读取和写入数据库
function readLargeFileAsChunks(filename, db) {
let that = this;
const fileStream = fs.createReadStream(filename, {encoding: 'utf8'});
let remainingData = '';


fileStream.on('data', async data => {
    // 将上一个batch中剩余的数据和下一个batch合并到一起
    const lines = (remainingData + data.toString()).split('\n');
    remainingData = lines.pop(); // 最后一行可能是不完整的
    if (lines.length <= CHUNKSIZE) {
        await that.writeData(lines.join('\n'), db);
    } else {
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值