从节点/窗口将数据插入Influxdb导致问题

时间:2018-02-01 07:19:58

标签: node.js windows influxdb carriage-return

我正在尝试使用节点/窗口将数据插入InfluxDb,但是有一个(看似众所周知的)错误,我无法理解我的想法。我试图通过从文件加载数据并使用POST发送到我的数据库来批量插入我的本地数据库。以下是我要插入的数据:

test_data.txt

test_measurement test=val1 1516665684
test_measurement price=val2 1516665685
test_measurement price=val3 1516665686

使用代码:

var http = require("http");
var fs = require('fs');


fs.readFile('test_data.txt', { encoding: 'utf8' }, function (err, data) {
  var options = {
    "method": "POST",
    "hostname": "localhost",
    "port": "8086",
    "path": "/write?db=test_db",
    "headers": {
      "cache-control": "no-cache"
    }
  };

  var req = http.request(options, function (res) {
    var chunks = [];

    res.on("data", function (chunk) {
      chunks.push(chunk);
    });

    res.on("end", function () {
      var body = Buffer.concat(chunks);
      console.log(body.toString());
    });
  });

  req.write(data);
  req.end();
});

我收到错误

{"error":"unable to parse 'test_measurement test=val1 1516665684\r': bad timestamp\nunable to parse 'test_measurement price=val2 1516665685\r': bad timestamp\nunable to parse 'test_measurement price=val3 1516665686': bad timestamp"}

从我的研究中,我知道windows使用\ r \ n字符作为回车符,但是我无法解决如何解决这个问题。我在读取文件时尝试删除所有\ r和\ n字符,但它似乎没有删除它们,因为我继续得到相同的错误。即使我能够以这种方式移除它们,涌入如何知道批次的下一个插入物的开始位置?它需要知道下一行开始批量插入的位置,但不喜欢新行字符。

任何帮助都会很棒!!

1 个答案:

答案 0 :(得分:1)

Double quote string field values. Do not double quote floats, integers, or booleans.

更新(在描述中出现实际响应后)

然后显然是\r

你的文件是由Windows编辑器创建的,我认为 - 它最后都有两个符号。

所以你只需把它变成Unix格式,有很多工具可能,Notepad ++最受欢迎。

或者,更好的是,只需在代码中添加一些简单的字符串预处理,它就是JS的超级简单:

req.write(data.replace("\r",""));