1

我想使用 Salesforce 的 Bulk API 来运行这种格式的查询。

Select Id from Object where field='<value>'.

我有数千个这样的字段值,并且想要检索这些对象的 Id。AFAIK,Salesforce 的批量查询仅支持一个 SOQL 语句作为输入。

一种选择可能是形成一个查询,如

Select Id,field where field in (<all field values>)

但问题是 SOQL 有 10000 个字符的限制。

这里有什么建议吗?

谢谢

4

3 回答 3

2

您似乎正在尝试执行某种搜索查询。如果是这样,您可能会考虑使用SOSL查询而不是 SOQL,只要您正在搜索的字段由 SFDC 编制索引。

否则,我同意 Born2BeMild 的观点。您的第二种方法更好,将您的值列表分成批次将有助于绕过限制。

如果您更详细地描述一些用例,也会有所帮助。通常,即使使用批量 API,对一组动态字段和值的查询也并不总是产生最佳性能。您最好将数据下载到本地数据库并以这种方式探索数据。

于 2012-07-17T14:00:03.537 回答
1

您可以将它们分解为 200 个左右的值,并迭代地查询 Salesforce 以在内存中构建结果集或处理数据子集。

不过,您将不得不检查 SOQL 查询的最大数量的调控器限制。您应该能够在运行时通过 API 跟踪您的使用情况,以避免超过最大值。

于 2012-07-17T08:42:01.523 回答
0

问题是您正在达到州长限制。如果来自数据库,Saleforce 一次只能处理 200 条记录。因此,为了能够首先处理所有这些记录,您需要将所有记录添加到列表中,例如:

 List<Account> accounts= [SELECT id, name, FROM Account];

然后你可以使用列表帐户做你需要做的一切,然后当你完成后,你可以使用以下方法更新数据库:

Update accounts;

此链接可能会有所帮助: https ://help.salesforce.com/apex/HTViewSolution?id=000004410&language=en_US

于 2015-03-16T21:59:09.430 回答