我想使用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个字符的限制。
这里有什么建议吗?
由于
答案 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