salesforce SF CLI 数据运维经验分享
SF CLI data默认使用bulk api v2, 数据操作效率有了极大的提高。
Bulk api v2的优点:
- 执行结果可以很直观的从Bulk Data Load Jobs中看到。相较于bulk api v1,只能看到job执行in progress,或者closed的状态,有了很大的改善。
- 执行速度快,query, upsert,delete执行效率高。
- 数据upload到服务器后,可以直观的从UI上查看进度。可以关客户端程序。
Bulk api v2的缺点很明显,执行结果需要使用api工具获取,不能很直观的从ui上查看。
数据运维常用CLI(Bulk V2):
1. update/ insert
sf data upsert bulk --sobject Account --file '.\upsertdata.csv' --external-id Account_Id__c --target-org my-scratch
--external-id:新建数据的时候,-Id,
更新数据的时候,改成Auto Number或者external 勾选的文本字段。通常业务提交的数据都是业务Id,如123456,AB11111等。此处填写external id字段可以避免vlookup数据,极大提高了工作效率。
文件编码必须是UTF-8,可以通过notepad++或vs code修改。列名必须是API Name,前后不能有空格.文件最大150M,超过后需要手动截取。或者根据sql现在时间范围。
2. Query
sf data export bulk --query "SELECT Id, Name FROM Account " --output-file export-accounts.csv --wait 10 --target-org my-scratch
这命令可以快速导出数据,用于更新,删除,或者数据对比。缺点就是无法指定列名,无法使用关联关系的字段。
实际使用的时候,可以多条命令行形成一个shell文件,一起执行。查询的结果,需要使用excel编辑一下。
3. Delete
sf data delete bulk --sobject MyObject__c --file files/delete.csv --wait 5 --target-org my-scratch
删除的文件中,只需要Id一列。可以结合Query的命令行快速完成数据的删除工作。
如何获取执行结果
1. setup=》Bulk Data Load Jobs中查看job的执行结果,
2. 如果遇到有错误的情况,使用post man或者其他API工具,根据单个Job Id获取结果。方法如下,或参考SOAP API 文档配置。
获取session Id
URL:
国际版:https://login.salesforce.com/services/Soap/c/v60.0/
阿里版:https://login.sfcrmproducts.cn/services/Soap/c/v61.0/
报文:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:enterprise.soap.sforce.com" xmlns:urn1="urn:sobject.enterprise.soap.sforce.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><urn:login><urn:username>XXXXX</urn:username><urn:password>XXXXX</urn:password></urn:login></soapenv:Body>
</soapenv:Envelope>
Header:
SOAPAction:/services/Soap/c/60.0/
Content-Type:text/xml
获取失败结果
URL:https://instanceURL/services/data/v59.0/jobs/ingest/{ {_jobId}}/failedResults
header:
Authorization:Bearer { {sessionId}}