如何在Salesforce中对重复外部ID的记录执行DataLoader Upsert?
问题分析
你遇到的报错核心原因是:ExternalText字段虽标记为外部ID并勾选了唯一标识,但当前Org中已存在2条Account记录的ExternalText值均为E1,Upsert操作需要通过外部ID匹配唯一记录,重复值导致系统无法确定要更新哪一条,因此抛出错误。
实现目标的步骤
要让两条记录的Description依次更新最终为Description2,可按以下操作:
1. 先清理重复的外部ID值(必须步骤)
因为外部ID的唯一标识属性要求该字段值全局唯一,现有重复数据违反了这个约束,必须先修正:
- 导出所有ExternalText值为E1的Account记录(用DataLoader或报表导出,包含
Id和ExternalText字段) - 手动修改其中一条记录的
ExternalText值为其他唯一值(比如E1_1),确保该字段无重复
2. 使用DataLoader执行Upsert更新剩余的E1记录
修正重复后,按以下步骤操作:
- 准备CSV文件,只保留一行E1的记录(因为现在只有一条E1的Account了):
ExternalText,Description E1,Description 2 - 用DataLoader执行Upsert,选择
Account对象,指定外部ID字段为ExternalText - 执行后,这条E1的Account记录的Description会被更新为
Description 2
3. 若需同时更新原两条记录到同一Description值
如果你的真实需求是让原来的两条记录最终Description都是Description2,不需要区分顺序,可直接:
- 导出这两条记录的
Id字段 - 准备包含
Id和Description的CSV:Id,Description <id1>,Description 2 <id2>,Description 2 - 用DataLoader执行Update操作(而非Upsert),通过
Id精准匹配并更新两条记录
关键注意事项
- 外部ID字段勾选“作为外部系统唯一标识”后,系统会强制该字段值唯一,后续插入/ Upsert时不能再出现重复值,否则会报错
- Upsert的核心逻辑是“匹配到唯一记录则更新,未匹配则插入”,因此必须保证用于匹配的外部ID值在Org中唯一
内容的提问来源于stack exchange,提问作者Georgia
相关产品推荐
相关产品推荐

