luu*_*uux 7 java amazon-dynamodb
我试图删除 dynamodb 中表中的所有项目,但它不起作用。
try {
ScanRequest scanRequest = new ScanRequest().withTableName(table);
ScanResult scanResult = null;
do {
if (Check.nonNull(scanResult)) {
scanRequest.setExclusiveStartKey(scanResult.getLastEvaluatedKey());
}
scanResult = client.scan(scanRequest);
scanResult.getItems().forEach((Item) -> {
String n1 = Item.get("n1").toString();
String n2 = tem.get("n2").toString();
DeleteItemSpec spec = new DeleteItemSpec().withPrimaryKey("n1", n1, "n2", n2);
dynamodb.getTable(table).deleteItem(spec);
});
} while (Check.nonNull(scanResult.getLastEvaluatedKey()));
} catch (Exception e) {
throw new BadRequestException(e);
}
Run Code Online (Sandbox Code Playgroud)
n1 是我的主分区键
n2 是我的主排序键
前言:虽然扫描操作很昂贵,但我需要这个答案来初始化测试场景(低容量)的表。该表是由另一个进程创建的,我需要该表上的测试场景,因此我无法删除并重新创建该表。
答案:给出:
DynamoDbClient 数据库
静态字符串表名
静态字符串 HASH_KEY
静态字符串 SORT_KEY
ScanIterable scanIterable = db.scanPaginator(ScanRequest.builder()
.tableName(TABLE_NAME)
.build());
for(ScanResponse scanResponse:scanIterable){
for( Map<String, AttributeValue> item: scanResponse.items()){
Map<String,AttributeValue> deleteKey = new HashMap<>();
deleteKey.put(HASH_KEY,item.get(HASH_KEY));
deleteKey.put(SORT_KEY,item.get(SORT_KEY));
db.deleteItem(DeleteItemRequest.builder()
.tableName(TRANSACTION_TABLE_NAME)
.key(deleteKey).build());
}
}
Run Code Online (Sandbox Code Playgroud)