Loading

准备 CSV 文件,以便在 Salesforce 中导入或更新

发布日期: Nov 10, 2021
解决方案
 
警告
在执行任何数据操作前,请务必备份数据。请查看从 Salesforce 导出备份数据导出数据,以了解更多详细信息。我们建议使用一小部分记录运行测试,以通过手动打开并验证相应记录在 Salesforce 中正确确保操作成功。


准备 CSV 文件

CSV 文件的第一行(标题行)列出了正在处理对象的字段名称。随后每一行与 Salesforce 中的记录对应。记录包含一系列字段,并使用逗号分隔。CSV 文件可包含多个记录,这称为批处理。


CSV 文件中的所有记录必须用于相同对象。您指定与批处理关联的作业中的对象。与作业关联的所有批处理必须包含相同对象的记录。


使用批处理 API 处理 CSV 文件:

  • 文件必须使用 UTF-8 格式。
  • 批处理 API 仅支持逗号用作分隔符。
    • 如果您使用国际计算机,使用 Excel 生成的 .CSV 文件很可能未使用逗号分隔。您可以在计算机上使用 Notepad 应用程序打开 .CSV 文件,检查是否使用逗号分隔。
    • 如果您看到 Tom;Jones;buyer@salesforcesample.com,这表示当前分隔符是分号,而非逗号。这将导致文件出现导入问题。
      • 使用逗号,替换分号。例如,在 PC 上,您可以使用键盘组合键 CTRL + H 查找并替换,然后保存文件。
  • 批处理 API 已对处理大量数据进行优化,并对 CSV 文件使用严格格式处理 CSV 文件的最简单的方法是,启用适用于 Data Loader 的批处理 API。
  • 在创建记录时,您必须包含所有必填字段。 
  • 如果您更新记录,将在更新时忽略未在 CSV 文件中定义的任何字段。
 

标题行中的关系字段

Salesforce 中的多个对象与其他对象相关。例如,客户是联系人的父级。通过在列标题中表示关系,您可以在 CSV 文件中添加相关对象的引用。

在使用批处理 API 处理记录时,您在 CSV 列标题中使用 RelationshipName.IndexedFieldName 语法,描述对象与父级之间的关系,其中 RelationshipName 是字段的关系名称,IndexedFieldName 是唯一标识父记录的索引字段名称。在基于 SOAP 的 SOAP API 中使用 describeSObjects() 调用,获取字段的 RelationshipName 属性值。

一些对象与自身具有关系。例如,联系人的报告对象字段是对另一个联系人的引用。如果插入联系人,您可以使用 ReportsTo.Email 列标题,表示您使用的联系人电子邮件字段唯一标识联系人的报告对象字段。列标题

ReportsTo 的部分是报告对象字段的 relationshipName 属性值。

以下 CSV 文件使用关系:
 

1 FirstName,LastName,ReportsTo.Email 2 Tom,Jones,buyer@salesforcesample.com


备注:
 

  1. 您可以使用子-父关系,但无法使用父-子关系。
  2. 您可以使用子-父关系,但无法扩展使用子-父-祖父关系。
  3. 您仅可在父对象上使用索引字段。
    • 如果选择外部 ID 字段,将对自定义字段编制索引。
    • 如果 idLookup 属性设置为 true,将对标准字段编制索引。 
    • 有关标准对象,请查看字段表中的字段属性列。


自定义对象的关系字段

自定义对象使用自定义字段,跟踪对象之间的关系。使用关系名称(以 __r(underscore-underscore-r) 结尾),表示两个自定义对象之间的关系。通过在列标题中表示关系,您可以添加相关对象的引用。


如果子对象的自定义字段(指向父自定义对象)API 名称是 Mother_Of_Child__c,父对象的字段 API 名称是 External_ID__c,使用列标题 Mother_Of_Child__r.External_ID__c ,表示您使用父对象的外部 ID 字段唯一标识子女的母亲字段。要在列标题中使用关系名称,将子对象自定义字段中的 __c 替换为 __r.

以下 CSV 文件使用关系:
 

1 Name,Mother_Of_Child__r.External_ID__c 2 CustomObject1,123456
有关更多信息,请查看 SOQL 和 SOSL 简介

多态字段的关系

多态字段可将多个类型的对象引用为父级。例如,联系人或潜在客户可以是任务的父级。换言之,任务的 WhoId 字段可以包含联系人或潜在客户的 ID。 


鉴于多态字段更具灵活性,因此列标题的语法使用额外元素,定义父对象的类型。语法是 ObjectType:RelationshipName.IndexedFieldName


以下示例包含两个引用字段:
 

  1. WhoId 是多态字段,并具有 Who 的 relationshipName。这是指潜在客户,以及唯一标识父记录的索引电子邮件字段。
  2. OwnerId 不是多态字段,并具有 Owner 的 relationshipName。这是指用户,以及唯一标识父记录的索引 ID 字段。
     
以下 CSV 文件使用多态字段:
1 Subject,Priority,Status,Lead:Who.Email,OwnerId 2 Test Bulk API polymorphic reference field,Normal,NotStarted,lead@salesforcesample.com,005D0000001AXYz



有效 CSV 记录行
字段列标题的
ObjectType: 部分仅对多态字段是必填项。如果对多态字段忽略此语法,将出现错误。如果您对非多态字段包含此语法,也将出现错误。


批处理 API 对字段值使用严格格式,优化处理大数据集。在生成包含 Salesforce 记录的 CSV 文件时,请谨记以下事项:
 

  • 字段值在行中的分隔符必须使用逗号。
  • 如果字段值包含逗号、换行或双引号,必须包含在双引号内:例如“西部地区运营总监”。
  • 如果字段值包含双引号,必须在双引号前添加另一个双引号进行转义:例如“这是““黄金””标准”。
  • 字段值未截断。字段值会在分隔逗号前后包含空格。双引号前或后的空格将生成行的错误。
    • 例如,John,Smith 有效;John, Smith 有效,但第二个值是“Smith”;“John”,“Smith”无效。
  • 在更新记录时,将忽略空字段值。要将字段值设置为空,使用 #N/A 的字段值。
  • 双精度数据类型的字段可包含小数值。如 W3C XML 方案第 2 部分:数据类型第二版规范所示,如果数字足够大(或对于负数,足够小),值会使用科学记数法进行存储。
  • Excel 支持移除 .CSV 文件中的前导零。请确保在导入前,检查数字值(即邮政编码)。
 
备注:
  • 作为解决方法,用户可以尝试使用 Excel 打开 .CSV 文件,然后保存。有时,这会更正一些格式化错误。
  • 一个无效行,即可使整个导入失败。将 CSV 拆分为较小的文件,这有助于找出哪个记录和/或列出现错误或导入问题。


示例 CSV 文件


以下 CSV 示例包含联系人对象的 2 个记录。每个记录包含 6 个字段。您可以包含待处理对象的任何字段。如果您使用此文件更新现有客户,将在更新时忽略未在 CSV 文件中定义的任何字段。


在创建记录时,您必须包含所有必填字段。
 

1 FirstName,LastName,Title,ReportsTo.Email,Birthdate,Description 2 Tom,Jones,Senior Director,buyer@salesforcesample.com,1940-06-07Z,"Self-described as ""the top"" branding guru on the West Coast" 3 Ian,Dury,Chief Imagineer,cto@salesforcesample.com,,"World-renowned expert in fuzzy logic design.4 Influential in technology purchases."



请注意,最后一个记录的描述字段包含换行符,因此字段值需要使用双引号标识。
 

在将数据导入不同对象时的注意事项

 
  • 查找字段 - ID;Salesforce ID 是区分大小写的 15 个字符或区分大小写的 18 个字符组成的的字母字符串,它可唯一标识特定的记录。要确保数据质量,请确保以正确的大小写在 Data Loader 中输入所有 Salesforce ID。
  • 选项列表字段:字段值应与选项列表中的其中一个值完全匹配。如果提供的任何其他新值未在选项列表中,将不会添加到选项列表,而是导致记录失败。
  • 日期字段:日期字段应根据 CSV 文件中的“日期”和“日期时间”数据的格式概述进行格式化;否则,对于数据导入向导,无需更改日期或时间字段的格式。
  • 布尔字段:您可以使用真或假值进行映射。例如,如果记录有可选中或取消选中的复选框字段,您可以使用真或假值,分别将其选中或取消选中。
  • 货币字段:无需添加逗号或货币符号。Salesforce 将根据贵组织的默认货币设置,自动选择格式。
  • 电子邮件地址:请确保,电子邮件的格式遵守 RFC 5321,并且不包含依据电子邮件国际协议不允许的无效字符。无效电子邮件的示例比较少见,如下所示:
    • Abc.example.com(没有 @ 字符)
    • A@b@c@example.com(引号内仅可使用一个 @)
    • a"b(c)d,e:f;g<h>i[j\k]l@example.com(引号内不得包含此本地部分中的特殊字符)
    • just"not"right@example.com(使用引号的字符串必须使用点隔开,或构成本地部分的唯一元素)
    • this is"not\allowed@example.com(空格、引号和反斜杠仅在使用引号的字符串中并以反斜杠开头时使用)
    • this\ still\"not\\allowed@example.com(即使转义(以反斜杠开头),引号仍必须包含空格、引号和反斜杠)
    • john..doe@example.com(@ 之前有 2 个点)
    • 警告:Gmail 支持此功能,电子邮件地址#本地部分共同使用点
    • john.doe@example..com(@ 之后有 2 个点)
    • 包含前导空格的有效地址
    • 包含尾随空格的有效地址
  • 验证规则:请确保,是否对任何字段应用任何验证规则,以及值是否符合验证规则的条件;否则,记录将失败。或者,您可以选择覆盖验证规则,并在上载前取消激活。
  • 触发器:请确保,是否对要导入或更新记录的对象应用任何触发器,以及因不满足特定条件导致记录失败。您可以选择在上载前取消激活绕过触发器,并在上载完成后重新激活触发器。


在使用 Apex Data Loader 插入、删除或更新文件时,使用映射对话框窗口将 Salesforce 字段与 CSV 文件的列关联。
 

  1. 要自动将字段与列匹配,请单击自动将字段与列匹配。Data Loader 根据字段与类名称的相似性,填充窗口底部的列表。对于删除操作,自动匹配仅对 ID 字段工作。
  2. 要手动匹配字段与列,请单击顶部的 Salesforce 字段列表中的字段并将其拖至底部 CSV 列标题名称的列表中。例如,如果您要在包含新客户姓名的 CSV 文件中插入新的“客户”记录,单击姓名字段,并将其拖放到姓名列标题字段的右侧。
  3. 也可以单击保存映射保存该映射,以备后用。为 SDL 映射文件指定名称。如果您选择现有的文件,则会替换该文件的内容。单击“是”确认此操作,或者单击“否”选择其他文件。4.单击“确定”以将您的映射用于当前操作。


要从不符合这些规则的 CSV 文件导入数据,将 CSV 文件中的数据字段映射到 Salesforce 数据字段,请查看映射数据字段


另请参阅:


Salesforce YouTube 视频
知识文章编号

000381876

 
正在加载
Salesforce Help | Article