我使用jsforce使用批量API访问salesforce。它有两种更新和删除记录的方法。一个是使用正常的批量api,这意味着创建一个工作和批次:
var job = conn.bulk.createJob("Account", "delete");
var batch = job.createBatch();
var accounts = getAccountsByDate(jsforce.Date.TODAY);
batch.execute(accounts);
batch.on('response', function(rets) {
// do things
});
另一种方式是"查询"这样的界面:
conn.sobject('Account')
.find({ CreatedDate: jsforce.Date.TODAY })
.destroy(function(err, rets) {
// do things
});
第二种方式当然似乎更容易,但我无法一次更新或删除超过10,000条记录,这似乎是一个salesforce api limit on batch size。请注意,使用maxFetch
中的jsforce
属性似乎在这种情况下无效。
因此可以安全地假设查询样式界面只创建一个批处理? jsforce documentation目前尚不清楚。
答案 0 :(得分:2)
目前,JSforce bulk api中的bulk.load()方法会生成一个批处理作业,因此将应用每批10,000个限制。使用find-and-destroy接口时也是如此,该接口在内部使用bulk.load()。 要避免此限制,您可以通过bulk.createJob()创建作业,并通过job.createBatch()创建多个批次,然后将记录分发到这些批次中,以便每个记录不会超出限制。