首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python-无法使用大容量Api读取salesforce中的表,而启用"pk_chunking“可以创建多个批,以更快地检索数据。

python-无法使用大容量Api读取salesforce中的表,而启用"pk_chunking“可以创建多个批,以更快地检索数据。
EN

Stack Overflow用户
提问于 2019-06-06 23:34:40
回答 1查看 606关注 0票数 0

在尝试通过启用pk_chunking = True在salesforce中读取accounts表时,获得的错误为

作业的salesforce_bulk.salesforce_bulk.BulkBatchFailed:批7511M00000KiqGsQAJ无失败:无

我查看了salesforce监视,pk_chunking创建了11个批,除上面的情况外,所有批都有结果,它们的请求类似于

代码语言:javascript
复制
select Id from Account where Id >='' and Id<'' " 

下面是我写的代码:

代码语言:javascript
复制
table_names = ['Account','table1']
bulk = connect_sfdc_bulk('prod')
for x in table_names:
    job = bulk.create_query_job(x, contentType='CSV', pk_chunking=True)
    batch = bulk.query(job, "select Id from %s" % x)
    print(bulk.get_batch_list(job))
    print('batch status: ' , bulk.is_batch_done)
    while not bulk.is_batch_done(batch):
        time.sleep(6)
    for result in bulk.get_all_results_for_query_batch(batch):
        result = unicodecsv.DictReader(result, encoding='utf-8')
    # print(result)
    bulk.close_job(job)

请推荐如何修复此错误,并并行读取salesforce中的大型表。

EN

回答 1

Stack Overflow用户

发布于 2019-12-26 13:05:48

我面临着同样的错误,我是如何解决的就是在get_all_results_for_query_batch中添加“作业”参数(批处理,作业)。

所以代码会是这样的

代码语言:javascript
复制
table_names = ['Account','table1']
bulk = connect_sfdc_bulk('prod')
for x in table_names:
    job = bulk.create_query_job(x, contentType='CSV', pk_chunking=True)
    batch = bulk.query(job, "select Id from %s" % x)
    print(bulk.get_batch_list(job))
    print('batch status: ' , bulk.is_batch_done)
    while not bulk.is_batch_done(batch):
        time.sleep(6)
    for result in bulk.get_all_results_for_query_batch(batch,job):
        result = unicodecsv.DictReader(result, encoding='utf-8')
    # print(result)
    bulk.close_job(job)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56486296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档