解析CSV文件并将数据放入AWS DynamoDB的表中。属性可能不包含空字符串
因为它现在代表,我收到以下错误:
One or more parameter values were invalid: An AttributeValue may not contain an empty string
...之前,把该表中的数据。数据已经上了桌子,但不会在发生这种错误一百万次的垃圾邮件之前。
我的代码:
var csv = require("fast-csv");
csv.fromPath(file, {
headers: true,
ignoreEmpty: true
})
.on("data", function(data) {
for (var key in data) {
if (data.hasOwnProperty(key)) {
if (data[key] === "" || data[key] === undefined || data[key] === null) {
data[key] = "N/A";
}
}
params = {
TableName: tableName,
Item: {
RefID: {
S: data["Ref-ID"]
},
//lots of other data
}
};
dynamodb.putItem(params, function(err, data) {
if (err) {
console.error("Unable to add item. Error JSON:", JSON.stringify(err, null, 2));
}
else {
console.log("Added item:", JSON.stringify(data, null, 2));
}
});
}
})
.on("end", function() {
console.log("done");
});
正如你所看到的,我将任何可能的空字符串== N/A
在试图解决这个问题。有什么想法吗?
编辑:
这原来是undefined
时,它应该显示它放在桌子上。
console.log("Added item:", JSON.stringify(data[key], null, 2));
编辑2:改变了这种代码...
dynamodb.putItem(params, function(err, data)
...这样的:
dynamodb.putItem(params, function(err, info)
我仍然得到了错误,但我现在正确显示表。
该错误意味着您的某些数据不在您的表格中。如果发生该错误;这应该表示Item没有被插入。对于错误顺序的数据,你的意思是什么?除非您提供范围键,否则数据没有真正的顺序? – jacob
啊,你对订单是正确的。忽略我说过(我编辑了它)。我现在主要关心的是这个错误,我似乎无法解决。我在得到所有错误之后测试表格,并且数据在那里。但似乎是在尝试了很多次之后。 – FF5Ninja
您有可能在“data”上访问的某个字段实际上不存在?我发现你在迭代中占用空字符串;但它没有考虑预期关键名称中的潜在错字;或者如果密钥名称不存在? – jacob