在Salesforce SFDX中通过JSON导入数据时如何避免重复记录
JSON导入联系人防重复操作方案
1. 直接沿用External ID逻辑,调用upsert接口
绝大多数支持External ID的业务系统/CRM,在API导入JSON的场景下都内置了upsert(更新+插入二合一)能力,逻辑和导入向导的去重规则完全一致:
- 导入前在请求参数中指定将
External ID作为匹配依据 - 系统自动拿JSON中每条数据的External ID值和库中已有记录匹配
- 匹配到相同值就更新对应记录的其余字段,不会生成新记录
- 未匹配到则直接新增记录
以下是通用的JSON请求示例,可根据你使用的平台调整字段和请求规则:
{ "allOrNone": false, "records": [ { "type": "Contact", "ExternalID__c": "CONT0001", "FirstName": "张三", "LastName": "李四", "Email": "zhangsan@example.com" } ] }
请求时在头信息中指定Upsert的匹配字段为ExternalID__c即可自动触发去重逻辑。
2. 导入前先对JSON文件本身做去重
如果你使用的系统不支持upsert操作,可以在导入前先清理JSON内的重复数据,步骤如下:
- 确定唯一匹配规则,优先用External ID,也可以用邮箱、手机号等天然唯一的业务字段作为匹配依据
- 遍历JSON中的联系人数组,用哈希表存储已出现的唯一值,重复数据直接过滤
以下是简单的JS去重示例:
const rawContacts = require('./待导入联系人.json') const uniqueMap = new Map() rawContacts.forEach(item => { // 此处可替换为你选定的唯一匹配字段 const uniqueKey = item.ExternalID__c if (!uniqueMap.has(uniqueKey)) { uniqueMap.set(uniqueKey, item) } }) // 最终导入去重后的数组即可 const deduplicatedContacts = Array.from(uniqueMap.values())
3. 存储层加唯一兜底约束
如果是自定义开发的导入系统,直接在联系人数据表给External ID字段加唯一索引,重复数据插入时会自动抛出冲突错误,导入脚本捕获该错误后直接跳过对应条目即可。
内容的提问来源于stack exchange,提问作者RKCY
相关产品推荐
相关产品推荐

