从 node / windows 向 influxdb 插入数据导致问题

Insert data into influxdb from node / windows causes problems

我正在尝试使用 node/windows 将数据插入到 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 个字符作为回车符 return,但我无法确定如何解决此问题。当我读入文件时,我尝试删除所有 \r 和 \n 字符,但它似乎并没有删除它们,因为我继续遇到同样的错误。即使我能够以这种方式删除它们,涌入如何知道下一批插入的开始位置?它需要知道批量插入的下一行从哪里开始,但不喜欢换行符。

任何帮助都会很棒!!

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

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

那么显然 \r

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

所以你把它转成Unix格式就可以了,工具很多,也许Notepad++是最流行的。

或者,更好的做法是,在您的代码中添加一些不起眼的字符串预处理,使用 JS 非常简单:

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