解析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