我想使用以下代碼將資料從我的 JSON 檔案匯入 DynamoDB:
var AWS = require("aws-sdk");
var fs = require('fs');
AWS.config.update({
region: "us-west-2",
endpoint: "http://localhost:8000"
});
var docClient = new AWS.DynamoDB.DocumentClient();
console.log("Importing Pays into DynamoDB. Please wait.");
var allPays = JSON.parse(fs.readFileSync('paysdata.JSON', 'utf8'));
allPays.forEach(function(pays) {
var params = {
TableName: "Pays",
Item: {
"region": pays.region,
"name": pays.name,
"name.common": pays.name.common,
"languages": pays.languages,
"area": pays.area
}
};
docClient.put(params, function(err, data) {
if (err) {
console.error("Unable to add Pays", pays.name.common, ". Error JSON:", JSON.stringify(err, null, 2));
} else {
console.log("PutItem succeeded:", pays.name.common);
}
});
});
但我仍然收到此錯誤 這里 有沒有人知道如何解決這個問題?我嘗試在網站上遵循相同的步驟: Create table using nodejs Dynamodb?
但它不起作用。
我的 CreateTable.js
var AWS = require("aws-sdk");
AWS.config.update({
region: "us-west-2",
endpoint: "http://localhost:8000"
});
var dynamodb = new AWS.DynamoDB();
var params = {
TableName : "Pays",
KeySchema: [
{ AttributeName: "region", KeyType: "HASH"}, //Partition key
{ AttributeName: "name", KeyType: "RANGE" } //Sort key
],
AttributeDefinitions: [
{ AttributeName: "region", AttributeType: "S" },
{ AttributeName: "name", AttributeType: "S" }
],
ProvisionedThroughput: {
ReadCapacityUnits: 10,
WriteCapacityUnits: 10
}
};
dynamodb.createTable(params, function(err, data) {
if (err) {
console.error("Unable to create table. Error JSON:", JSON.stringify(err, null, 2));
} else {
console.log("Created table. Table description JSON:", JSON.stringify(data, null, 2));
}
});
一些資料 :
[
{
"name": {
"common": "Aruba",
"official": "Aruba",
"native": {
"nld": {
"official": "Aruba",
"common": "Aruba"
},
"pap": {
"official": "Aruba",
"common": "Aruba"
}
}
},
"translations": {
"ces": {
"official": "Aruba",
"common": "Aruba"
},
"deu": {
"official": "Aruba",
"common": "Aruba"
},
"jpn": {
"official": "\u30a2\u30eb\u30d0",
"common": "\u30a2\u30eb\u30d0"
},
"kor": {
"official": "\uc544\ub8e8\ubc14",
"common": "\uc544\ub8e8\ubc14"
},
uj5u.com熱心網友回復:
"name": {
"common": "Aruba",
"official": "Aruba",
"native": {
"nld": {
"official": "Aruba",
"common": "Aruba"
},
"pap": {
"official": "Aruba",
"common": "Aruba"
}
}
}
name是一個物件,因此您不能pays.name作為 的值name,因為它是“字串”資料型別。
要解決此問題,您可以將表定義更改為:
var params = {
TableName : "Pays",
KeySchema: [
{ AttributeName: "region", KeyType: "HASH"}, //Partition key
{ AttributeName: "name.common", KeyType: "RANGE" } //Sort key
],
AttributeDefinitions: [
{ AttributeName: "region", AttributeType: "S" },
{ AttributeName: "name.common", AttributeType: "S" }
],
ProvisionedThroughput: {
ReadCapacityUnits: 10,
WriteCapacityUnits: 10
}
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/411114.html
標籤:
下一篇:沒有回傳行的COALESCE
