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
にすべての可能な空の文字列を変換しています。何かご意見は?
EDIT:
これは、それがテーブルに置くものを表示する必要があるときundefined
であることが判明しました。
console.log("Added item:", JSON.stringify(data[key], null, 2));
EDIT 2:このコード変更...これまで
dynamodb.putItem(params, function(err, data)
...:
dynamodb.putItem(params, function(err, info)
私はまだエラーを取得していますが、正しくテーブルを表示しています。
このエラーは、一部のデータがテーブルにないことを意味します。そのエラーが発生した場合。 Itemが挿入されなかったことを意味するはずです。そして、データが間違った順序であることはどういう意味ですか?範囲キーを指定しない限り、データに実際の順序はありませんか? – jacob
ああ、あなたは正しいのですか?私はそれを言ったことを無視する(私はそれを編集した)。今私の主な懸念は、私が修正することができないこのエラーです。私はすべてのエラーを取得した後、テーブルをテストし、データがそこにあります。しかし、それは何度も何度も試みた後のように見えます。 – FF5Ninja
'data'にアクセスするフィールドの1つが実際に存在しない可能性はありますか?私はあなたの反復で空の文字列を考慮しているのを見ます。それは予想されるキー名の潜在的なタイプミスを説明しません。またはキー名が単に存在しない場合は? – jacob