在我的一个DynamoDb表中,我有一个名为“status”的列/键,它原来是一个保留关键字。不幸的是,不能删除整个表并重新初始化它。如何重命名密钥?
以下是导致异常的Lambda代码:
try :
response = table.query(
IndexName='myId-index',
KeyConditionExpression=Key('myId').eq(someId)
)
for item in response['Items']:
print('Updating Item: ' + item['id'])
table.update_item(
Key={
'id': item['id']
},
UpdateExpression='SET myFirstKey = :val1, mySecondKey = :val2, myThirdKey = :val3, myFourthKey = :val4, myFifthKey = :val5, status = :val6',
ExpressionAttributeValues={
':val1': someValue1,
':val2': someValue2,
':val3': someValue3,
':val4': someValue4,
':val5': someValue5,
':val6': someValue6
}
)
except Exception, e:
print ('ok error: %s' % e)
这里有一个例外:
2016-06-14 18:47:24UTC 2 ok错误:在调用UpdateItem操作时发生错误(ValidationExc0019):无效的Update表达式:属性名称是保留关键字;保留关键字:状态
使用NoSQL Workbench app AWS supports,我导出了表的一个副本,该表具有我想要更改的列名。我打开了创建的JSON文件NoSQL Workbench,然后对相关列的名称进行了简单的查找/替换。
在.JSON文件上的名称看起来正确的情况下,我使用NoSQL应用程序将该表重新导入到dynamodb中。导入将覆盖现有数据,这将清除错误的列名。
如果你有一个巨大的数据集,下载一个副本到你的本地计算机可能不是一个好的解决方案,但对于我的小桌子来说,它工作得相当好。
有一个简单的解决方案可以代替重新设置列的长度:在查询中使用投影表达式和表达式属性名称。
我遇到了同样的问题(我的表包含列“name”。下面是一个示例查询:
TableName: 'xxxxxxxxxx',
ExpressionAttributeNames: {
'#A': 'country',
'#B': 'postcode',
'#C': 'name'
},
ExpressionAttributeValues: {
':a': {S: 'DE'},
':c': {S: 'Peter Benz'}
},
FilterExpression: 'country = :a AND #C = :c',
ProjectionExpression: '#A, #B, #C'
没有真正简单的方法来重命名列。您必须为每个条目创建一个新属性,然后删除现有属性的所有值。
如果查询表时遇到问题,请使用表达式属性名称,没有理由删除属性/列。
从表达式属性名称文档中:
在某些情况下,您可能需要编写一个表达式,其中包含与DynamoDB保留字冲突的属性名称。。。要解决此问题,可以定义表达式属性名称。表达式属性名称是在表达式中使用的占位符,作为实际属性名称的替代项。
我有DynamoDB表,我想重命名它。似乎没有任何重命名表的命令或选项。以前有人给桌子重新命名过吗?
我有一个表,它有列[col1、col2、col3....col9]。我想在Python中把所有列数据合并到一个列中作为col?
问题内容: 我的应用崩溃了,因为我没有正确处理迁移。 我正在寻找一种解决方案来迁移表中1列的名称。 在我的项目中,我有一个名为“ content ”的房间表,其 双人间 属性为“ archivedCount ”。在该应用程序的最新版本中,仍将属性 archivedCount 属性重命名为 dismissCount ,仍为 Double 类型 。 原始内容模型 新内容模型 尝试的解决方案 阅读了Go
我正在尝试重命名数据库中表中的列。我已经试过了 我收到了一个错误回复,回复是-;请问这句话的正确语法是什么?谢谢
问题内容: 我有一个使用pandas和列标签的,我需要对其进行编辑以替换原始列标签。 我想在原始列名称为的 中更改列名称: 至 我已经将编辑后的列名存储在列表中,但是我不知道如何替换列名。 问题答案: 只需将其分配给属性:
我试图将我的应用程序上传到Play Store,但谷歌不允许应用程序包含名称为“example.xxxxx”的软件包。我的问题是,我的包叫做“com.example.mainActivity”,我已经尝试重命名它了,但我对IntelliJ所能做的就是将部件重命名为“mainActivity”。“榜样”依旧。在尝试通过进入清单并用不同的名称重构它来更改示例之后,IntelliJ刚刚用新名称创建了一个