如何批量上传JSON数据到Cloudant 出现请求实体过大错误如何解决
Cloudant 50MB JSON文件上传报错解决方案
报错原因
你收到的too_large报错是Cloudant的服务端默认限制导致的:平台单请求的最大允许载荷为10MB,单次上传50MB的文件必然触发该限制,和你用curl还是Node.js脚本无关。你限制单批次1000条文档后总载荷低于10MB,所以可以上传成功。
最快实现方案
你现在已经跑通的分批次上传就是成本最低、最快可用的方案,仅需要补充少量逻辑即可完成全量上传:
- 第一步:把50MB的大JSON文件按单批次1000条文档或者单文件8MB大小(留2MB冗余,避免编码后体积膨胀触发超限)拆分为多个小批次
- 第二步:用循环逻辑依次调用Cloudant的
/_bulk_docs接口上传每个批次即可,现有curl/Node.js代码不用大改,只需要加个拆分和循环逻辑 - 如果想要提升上传速度,可以改成最多10并发的异步上传,注意不要把并发数开太高,避免触发Cloudant的流控规则导致请求失败。
容易遗漏的操作要点
- 不要卡10MB的上限设单批次大小,留至少1-2MB的冗余空间,避免文档内特殊字符编码后体积意外超过限制
- 如果你的文档包含内嵌附件,注意单个文档的总大小不能超过1MB,超出的附件要单独拆分处理
- 批量上传的返回结果要逐批次校验,仅对返回的失败文档做补传,不要全量重试浪费资源
- 如果上传的文档自带
_id字段,建议提前和库内已有ID做去重校验,避免意外覆盖现有数据 - 不需要刻意调整单批次1000条的阈值,这个是适配大多数场景的经验值,调整反而可能出现超限或者上传效率下降的问题
内容的提问来源于stack exchange,提问作者Glynn Bird
相关产品推荐
相关产品推荐

