无法从 Azure 存储表中获取所有项目

Posted

技术标签:

【中文标题】无法从 Azure 存储表中获取所有项目【英文标题】:Cant get all items from Azure Storage Table 【发布时间】:2021-04-18 13:59:45 【问题描述】:

我无法从 Azure 存储表中获取超过 1000 个项目。我试过按照link添加这些标题:

OData-MaxVersion: 4.0  
OData-Version: 4.0  
Prefer: odata.maxpagesize=3 

我还寻找返回的@odata.nextLink 属性来获取下一页项目,但没有返回任何项目。该表有大约 2050 个项目。

【问题讨论】:

【参考方案1】:

这是默认设置,已添加用于性能优化。

针对表服务的查询可能会一次返回最多 1,000 个项目,并且最多可能会执行 5 秒。如果结果集包含超过 1,000 个项目,如果查询未在 5 秒内完成,或者如果查询跨越分区边界,则响应包括为开发人员提供继续令牌的标头,以便在结果集中的下一项。查询表操作或查询实体操作可能会返回继续令牌标头。

请参阅Query timeout and pagination,了解如何使用延续令牌标头获取下一组结果。

一个重要的额外信息:

返回超过默认最大值或指定最大结果数的请求会返回一个用于执行分页的继续令牌。在发出包含延续令牌的后续请求时,请务必在请求中传递原始 URI。例如,如果您已将 $filter、$select 或 $top 查询选项指定为原始请求的一部分,您将希望在后续请求中包含该选项。否则您的后续请求可能会返回意外结果。

【讨论】:

我默认知道它。它还说要返回更多项目,您应该设置 odata.maxpagesize= n 或者您应该在响应正文中获得指向下一组 1000 个项目的链接。 但是这个解决方案有效,而其他解决方案无效。我不明白为什么有几个文档,但还是谢谢!

以上是关于无法从 Azure 存储表中获取所有项目的主要内容,如果未能解决你的问题,请参考以下文章

从天蓝色表中读取行时为空值

Azure DevOps 2020 - 从集合中的多个项目的存储库中查找文件

无法从 Laravel Vue 通讯录项目中的外键表中获取数据

哪些情况会导致 AppSync 无法从 DynamoDB 表中返回所有匹配的记录/项目?

如何在 C# 中获取 Azure 表存储中的所有行?

无法使用服务主体从发布管道访问 Azure Devops Git 存储库