gpt4 book ai didi

java - SpreadsheetAddRows 在中等大小的查询上失败

转载 作者:行者123 更新时间:2023-12-01 04:45:35 25 4
gpt4 key购买 nike

编辑:我更改了名称,因为有一个类似的问题 How do I fix SpreadSheetAddRows function crashing when adding a large query?在那里描述了我的问题,所以我更简洁地进行了分述...问题是电子表格添加行我的查询结果以我认为适中的大小(1600 行,27 列)轰炸了整个服务器,但这听起来比他的 18,000 行少得多

我正在使用通过 Coldfusion 9.0.1 cfstoredproc 访问的 Oracle 存储过程,该过程完成后会创建一个电子表格供用户下载

问题是,大于 1200 行的结果集返回 500 内部服务器错误,700 行返回正常,所以我猜测这是内存问题?

除了标准 Coldfusion 外观中的 500 内部服务器错误之外,我收到的唯一消息是小字“超出了 gc 开销限制”,并且仅在页面刷新时出现一次,这是指底层 Java JVM

我什至不知道如何诊断这个

这里是 cfstoredproc 和电子表格 obj 的结尾

 <!--- variables assigned correctly above --->
<cfprocresult name="RC1">
</cfstoredproc>

<cfset sObj = spreadsheetNew("reconcile","yes")>
<cfset SpreadsheetAddRow(sObj, "Column_1, ... , Column27")>

<cfset SpreadsheetFormatRow(sObj, {bold=TRUE, alignment="center"}, 1)>

<cfset spreadsheetAddRows(sObj, RC1)>
<cfheader name="content-disposition" value="attachment; filename=report_#Dateformat(NOW(),"MMDDYYYY")#.xlsx">
<cfcontent type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" variable="#spreadsheetReadBinary(sObj)#">

最佳答案

我的答案在于冷融合和一个简单的事实:不要使用 SpreadsheetAddRows 或任何相关函数,如 SpreadsheetFormatRows

我的解决方案是执行查询,创建一个xls文件,使用标签cfspreadsheet写入新创建的xls文件,然后提供给浏览器,提供后删除

使用 SpreadsheetAddRows,运行时在 1000 多行时服务器崩溃,在 700 行时运行时间超过 5 分钟使用上述方法 1-1.5 秒

如果您对更多代码感兴趣,我可以提供评论,我正在使用冷盒框架,因此认为具体性不会对新工作流程有所帮助

关于java - SpreadsheetAddRows 在中等大小的查询上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15928332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com