如何在Salesforce中使用批量API和WHERE子句

时间:2012-07-16 23:10:46

标签: java salesforce soql

我想使用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个字符的限制。

这里有什么建议吗?

由于

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

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

然后您可以使用列表帐户执行您需要执行的所有操作,然后在完成后可以使用以下命令更新数据库:

Update accounts;

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