【问题标题】:Salesforce Bulk API Delete operatorSalesforce 批量 API 删除运算符
【发布时间】:2019-07-10 11:07:25
【问题描述】:

在 Salesforce Bulk API documentation 中,有一些关于如何执行插入、更新插入、更新和查询操作的示例。但删除操作的示例不可用。

在它说的批量 API 文档中;

批量 API 基于 REST 原则,并针对加载或删除大量数据进行了优化。您可以使用它通过提交批次异步查询、查询全部、插入、更新、更新插入或删除许多记录。 Salesforce 在后台处理批次。

但是删除和查询所有文档和示例都丢失了。有人可以提供删除操作的示例吗?

【问题讨论】:

    标签: salesforce salesforce-lightning


    【解决方案1】:

    批量 API 删除的语义与插入或更新基本相同:您创建一个作业,将操作设置为 "delete""hardDelete",然后针对它发布批量记录数据。对于删除,您只在批次中包含记录 ID,而不是可更新或可插入的记录内容。

    因此,批量 API 删除的实现通常只是折叠到相同底层架构的不同参数。查看您选择的 Salesforce 连接器库中的示例,例如

    批量 API 2.0 使用不同的模型,但在提取数据时,删除同样会折叠到不同的参数。请参阅

    中的实现

    【讨论】:

    • 感谢您的回答。您能否提供一个示例请求。我对请求正文感到困惑。我们不能在需要删除的数组中发送多个 id 吗?
    • @PramodyaMendis 是的,您可以包含多个 ID,就像更新请求一样。创建作业后,将批次推送到它的工作方式与删除与其他操作完全相同。
    • 您有任何示例请求(如何设置bode和headers等)?
    • @PramodyaMendis 我已经链接了三个实现 Bulk API 的 Python 库。我建议查看他们的代码。
    【解决方案2】:

    我自己在尝试进行 API 集成以维护 Salesforce 中的事件条目时遇到了这个问题。

    所有这些示例都是 json 格式,但它们应该可以很容易地分别转换为 csv 和 xml。

    从 Event 对象中删除需要一个作业,与所有操作一样,我一直在使用并发送到 <your salesforce site>/services/async/48.0/job/ 的示例作业请求如下所示:

    {
        "operation": "delete",
        "object": "Event",
        "concurrencyMode": "Parallel",
        "contentType": "JSON"
    }
    

    然后服务器会回复一些类似的内容(为简洁起见,省略了一些项目)

    {
        "apexProcessingTime": 0,
        "apiActiveProcessingTime": 0,
        "apiVersion": 48.0,
        "assignmentRuleId": null,
        "concurrencyMode": "Parallel",
        "contentType": "JSON",
        ...
        "numberRetries": 0,
        "object": "Event",
        "operation": "delete",
        "state": "Open",
        "systemModstamp": "2020-04-08T15:13:42.000+0000",
        "totalProcessingTime": 0
    }
    

    然后您按照<your salesforce>/services/async/48.0/job/<jobId>/batch/ 的规范创建批次,但删除批次只能包含您要删除的项目的 ID,例如 [{"Id":"00U5I00000145XcUAI"},{"Id":"00U5I00000145XdUAI"},{"Id":"00U5I00000145XeUAI"},{"Id":"00U5I00000145XgUAI"},{"Id":"00U5I00000145XhUAI"}]

    批处理完成并且失败或成功完成后,您可以通过发送通常的请求来获取结果 ID,然后从这些结果 ID 中获取结果来检索结果。我没有做任何与 Bulk API 上的查询操作不同的事情。

    在我的情况下,服务器响应

    [ {
      "success" : true,
      "created" : false,
      "id" : "00U5I00000145XcUAI",
      "errors" : [ ]
    }, {
      "success" : true,
      "created" : false,
      "id" : "00U5I00000145XdUAI",
      "errors" : [ ]
    }, {
      "success" : true,
      "created" : false,
      "id" : "00U5I00000145XeUAI",
      "errors" : [ ]
    }, {
      "success" : true,
      "created" : false,
      "id" : "00U5I00000145XgUAI",
      "errors" : [ ]
    }, {
      "success" : true,
      "created" : false,
      "id" : "00U5I00000145XhUAI",
      "errors" : [ ]
    } ]
    

    缺乏关于这些操作的官方指南很可能让我感到惊讶,但这里希望有人可以对你的问题的这个迟来的答复有所帮助。

    【讨论】:

    • 嗨@Henning Odén,欢迎来到stackoverflow!您正在回答一个超过 9 个月的老问题。请尝试回答新问题,这样会更有帮助。
    • 好吧,我自己也在研究这个问题,在我试图找到一个例子的过程中,我确实找到了这个问题,我认为这是我在谷歌搜索中的第三或第四个结果。由于没有其他人真正给出了一个明确的例子来说明它是如何在这里完成的,我回答说。此外,自最初提出该话题以来的 9 个月内,该话题的浏览量刚刚超过 400 次。我希望这个数字在未来可以增长。希望我也能帮助那些未来的访客。
    • 非常感谢!我在批处理格式上苦苦挣扎。感谢您提供样品!帮了大忙!
    猜你喜欢
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 2016-05-25
    • 2018-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    相关资源
    最近更新 更多