我有以下代码将每个块大小附加到主 Excel 文件中。
df = pd.read_sql(query,cnxn,chunksize=10000)
for chunk in df:
chunk.to_excel(r'C:\File\Path\file.xlsx', mode='a', sep=',',encoding='utf-8')
我遇到的问题是,我预计会有大约 800 万行的结果。由于 excel 的行数限制约为 100 万行,我正在考虑两种选择:
对于哪种方法最好有任何建议吗?我知道我需要修改代码的 mode='a' 部分。
这是我收到的错误消息:
ProgrammingError: ('42000', '[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]查询处理器耗尽内部资源,无法生成查询计划。这是一个罕见的事件,只有适用于极其复杂的查询或引用大量表或分区的查询。请简化查询。如果您认为自己错误地收到了此消息,请联系客户支持服务以获取更多信息。(8623) (SQLExecDirectW)')
提前致谢
编辑:一些进一步的说明
SQL 查询使用一个包含 200,000 个字符串的列表作为我的键并提取包含至少一个字符串的所有行。有多行具有相同的字符串标识符,这就是为什么我期望结果约为 800 万。这也是为什么我认为我遇到了编程错误。
答案 0 :(得分:1)
查询处理器耗尽了内部资源,无法生成查询计划。 SQL 查询使用了 200,000 个字符串的列表
为了简化查询,请在 JSON 文档中传递 200,000 个字符串,并像 this answer 一样在服务器上解析它们,或者将它们加载到临时表中并在您的查询中引用该表。
将它们嵌入到查询文本中是一个坏主意。