从 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",""));
我正在尝试使用 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",""));