1

QBApiWrap.QuickbaseApiWrapper.DoQuery在 C# 中使用从我的表中获取记录。以前它一直运行良好。现在记录数已增加到 30,000,我收到以下错误:

错误代码:75

Errtext : 报告太大

Errdetails :超出报告中的最大字节数

如何获取单个数据集中的所有记录?

我以以下方式查询:

     DataSet dsEmployee = My_Integration.QBApiWrap.QuickbaseApiWrapper.DoQuery(dbIdEmployee, ticket, "","3.6.7.8.21.15");
4

2 回答 2

1

我刚刚也遇到了这个问题,报告只有 4 个字段,但记录超过 120K。您可以使用 API_DoQueryCount 来获取查询将返回的记录总数,并结合 API_DoQuery 选项“num-n(n 是要返回的记录数”和“skip-n(n 是要跳过的记录数”)像下面的伪代码一样对记录进行分页:

maxRecords = {API_DoQueryCount}
retrievedRecords = 0
recordChunk = 1000
myCSV = path\to\csv
tempRecords = ""
while (retrievedRecords < maxRecords)
  tempRecords = API_DoQuery&query="yourQuery"&options=num-{recordChunk}.skp-{retrievedRecords}
  myCSV += tempRecords
  retrievedRecords += 1000

虽然上面的示例过于简化并且省略了将 XML 转换为 CSV 的步骤,但我认为它让您对如何完成它有了一个初步的了解。有关如何使用 DoQuery 选项的更多信息,请参阅文档

此外,我们的报告在超过 110,000 条记录后的某个时间停止返回记录,因此看起来他们可能扩大了之前的限制。我还会尝试一次返回多少条记录,并使用你能找到的最大安全数来减少你的应用程序必须发出的请求数,以便它执行得更快。

于 2019-01-24T20:33:25.817 回答
0

Quickbase 对您的查询超出的单个响应的大小有记录限制。为避免此错误,您需要减少查询返回的记录数。如果您实际上并未在程序中使用所有返回的记录,则应构建查询结构,以便排除您未使用的记录。实际上,如果您需要该表中的所有记录,则需要批量下载它们,然后合并数据集。

不幸的是,我从未编写过 C# 程序,因此无法帮助您了解语法,但要批量下载记录,您可以API_GetSchema在表 DBID 上使用来获取下一个记录 ID (table.original.next_record_id)。此编号是要创建的下一条记录的记录 ID。因此,您知道您的所有记录 ID 都小于该数字。使用下限 0 和上限 20,000,您可以查询记录 id 大于下限且小于上限的记录。将结果与现有数据集合并,将两个边界都增加 20,000 并重复,直到下限超过下一个记录 ID 号。最后,您应该拥有一个可以随 Quickbase 表扩展的数据集和代码。

于 2016-04-20T20:53:55.963 回答