如何在不使用 Salesforce Rest API 按 ID 或日期排序的情况下处理 SOQL 上大于 2000 的偏移量
How to handle an offset greater than 2000 on SOQL without sorting by ID or date using the Salesforce Rest API
现在我正在努力将网站从使用 oracle 数据库迁移到使用 salesforce。为了查询数据,我们正在使用最新版本的 salesforce rest API。现在,我在对偏移量大于 2000 的结果进行分页时遇到问题。我已经看到很多关于这个主题的问题,但 none 似乎符合我的问题。
所以这里有限制
- 我需要获取 20 条记录块的结果(即页面大小)。我不能只得到一堆结果然后进行一些手动分页,因为这超出了项目的范围。
- 我无法执行
WHERE ID > lastIdIntheResults LIMIT 20
之类的操作,因为我需要按名称对结果进行排序,按 ID 排序会破坏客户期望的顺序。
- 需要使用 REST API 完成。我认为没有办法在 REST API 上使用 queryMore 函数。
那么,你有什么建议吗?
谢谢
REST API 等同于 SOAP API 的 queryMore
是响应中的 done: false
和 nextRecordsUrl: ...
。
https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_query.htm
这是我通过 https://workbench.developerforce.com -> Utilities -> Rest Explorer 查询的数据:
然后下一个就是
要在没有 LIMIT/OFFSET 的情况下更改 "chunk size",您可以使用 HTTP header:Sforce-Query-Options: batchSize=200
现在我正在努力将网站从使用 oracle 数据库迁移到使用 salesforce。为了查询数据,我们正在使用最新版本的 salesforce rest API。现在,我在对偏移量大于 2000 的结果进行分页时遇到问题。我已经看到很多关于这个主题的问题,但 none 似乎符合我的问题。
所以这里有限制
- 我需要获取 20 条记录块的结果(即页面大小)。我不能只得到一堆结果然后进行一些手动分页,因为这超出了项目的范围。
- 我无法执行
WHERE ID > lastIdIntheResults LIMIT 20
之类的操作,因为我需要按名称对结果进行排序,按 ID 排序会破坏客户期望的顺序。 - 需要使用 REST API 完成。我认为没有办法在 REST API 上使用 queryMore 函数。
那么,你有什么建议吗?
谢谢
REST API 等同于 SOAP API 的 queryMore
是响应中的 done: false
和 nextRecordsUrl: ...
。
https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_query.htm
这是我通过 https://workbench.developerforce.com -> Utilities -> Rest Explorer 查询的数据:
然后下一个就是
要在没有 LIMIT/OFFSET 的情况下更改 "chunk size",您可以使用 HTTP header:Sforce-Query-Options: batchSize=200