You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过CLI从DynamoDB导出含指定字符串主键的数据并导入至其他表?

解决DynamoDB导出含特定主键字符串数据并导入的问题

问题根源

你之前用的--scan-filter参数已经被AWS弃用,而且直接用scan导出的JSON格式不符合DynamoDB批量导入的要求(批量导入需要特定的PutRequest结构包裹),所以无法直接导入。

分步解决方案

1. 正确导出符合条件的数据

改用官方推荐的--filter-expression参数筛选主键包含特定字符串的数据,导出到JSON文件:

aws dynamodb scan \
  --table-name 你的源表名称 \
  --filter-expression "contains(#pk, :search_str)" \
  --expression-attribute-names '{"#pk": "你的主键属性名"}' \
  --expression-attribute-values '{":search_str": {"S": "ser"}}' \
  --output json > filtered_data.json

注意替换:

  • 你的源表名称:实际的源DynamoDB表名
  • 你的主键属性名:如果你的主键不是Name,改成实际属性名
  • ser:你要筛选的特定字符串

2. 转换数据为可导入格式

DynamoDB的batch-write-item要求导入数据是PutRequest包裹的结构,用jq工具转换导出的JSON:

jq '{RequestItems: {"你的目标表名称": [.Items[] | {PutRequest: {Item: .}}]}}' filtered_data.json > import_ready.json

替换你的目标表名称为实际要导入的表名。

3. 执行批量导入

用转换后的文件执行导入:

aws dynamodb batch-write-item --request-items file://import_ready.json

注意事项

  • 如果数据量超过batch-write-item限制(单次最多25个项目或16MB),需要拆分文件分批导入。可以用jq按每20个项目拆分:
    jq -c ' .RequestItems."你的目标表名称" |= _nwise(20) ' import_ready.json | split -l 1 -d -a 3 - import_part_
    
    然后批量执行导入:
    for file in import_part_*; do
      aws dynamodb batch-write-item --request-items file://$file
      rm $file
    done
    
  • 确保源表和目标表的主键结构完全一致,否则导入会失败。

内容的提问来源于stack exchange,提问作者bash_hunter6159

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 05:52:15