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

将DataFrame存入AWS DynamoDB时避免重复错误并保证字段格式正确

解决DynamoDB存入重复错误并正确保存数据的方法

问题原因

你遇到的重复错误是因为DynamoDB表仅将primary_key设为唯一分区键,而数据中存在相同primary_key但不同piece的记录,DynamoDB会判定为主键冲突。要保存这两条记录,需要将primary_key设为分区键,piece设为排序键,组成复合主键,让(primary_key, piece)的组合唯一标识每条记录。

解决方案步骤

1. 调整DynamoDB表的主键结构

确保你的表配置复合主键:

  • 分区键:primary_key(数字类型)
  • 排序键:piece(数字类型)

如果表已创建且主键不符合要求,需要重新建表(DynamoDB不支持修改已有表的主键结构)。

2. 修正写入代码

你的原始数据中name字段本身就是字符串,存入时会自动以字符串类型保存,无需额外转换。如果需要强制指定字段类型,可通过dtypes参数声明:

import pandas as pd
import awswrangler as wr

# 构建DataFrame
data = {'primary_key': [1, 1, 2, 3],
        'piece': [2, 3, 4, 5],
        'name': ['avion', 'train', 'voiture', 'velo'],
        'year_sort_key': [2024, 2024, 2024, 2024],
        'month': [2, 2, 2, 2]}
df = pd.DataFrame(data)

# 可选:指定字段类型,确保name为字符串
dtypes = {
    "primary_key": "N",
    "piece": "N",
    "name": "S",
    "year_sort_key": "N",
    "month": "N"
}

# 写入DynamoDB
wr.dynamodb.put_df(
    df=df,
    table_name=table,
    dtypes=dtypes
)

3. 验证结果

写入完成后,可通过DynamoDB控制台或查询代码确认:

  • 四条记录全部成功保存
  • name字段以字符串类型存储
  • 相同primary_key不同piece的记录不再触发主键冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 02:27:38