gpt4 book ai didi

java - ColdFusion 8 读取大型 Excel 文件

转载 作者:行者123 更新时间:2023-12-01 14:07:31 26 4
gpt4 key购买 nike

我已经能够创建我的应用程序,以便它可以获取包含多个工作表的 Excel 文件并将它们放入数据库中。但是我不确定如何处理 30mb 以上的大文件我尝试查看 bufferedReader 但我不确定这是否是我想要的,因为它一次读取一部分并且我正在使用 Apache POI 可在多个 Excel 工作表中读取。

目前,如果我发送一个大文件,我会收到 Java 堆空间错误,这就是为什么我感觉该文件太大。测试的时候效果很好,然后我用了32mb的文件,就失败了。

下面是代码,感谢您提前提供的帮助。myfile 也是一个参数

ci_model = createObject("component", "com.data_feeds.models.ci.model_item_setup");
FileIn = createObject("java","java.io.FileInputStream").init(javacast("string", myfile));
wb = createObject("java","org.apache.poi.xssf.usermodel.XSSFWorkbook").init(FileIn);
workbook = createObject("java","org.apache.poi.xssf.streaming.SXSSFWorkbook").init(wb);
sheetCount = workbook.getNumberOfSheets();

for(sheetIndex = 0; sheetIndex LT sheetCount; sheetIndex = sheetIndex + 1)
{
recordIndex = 1;
sheet = workbook.getSheetAt(sheetIndex);

rowHeader = sheet.getFirstRowNum();
rowCount = sheet.getLastRowNum();

for (rowIndex = 1; rowIndex LTE rowCount; rowIndex = rowIndex + 1)
{
row = sheet.getRow(rowIndex);
columnCount = row.getLastCellNum();

for(columnIndex = 0; columnIndex LT columnCount; columnIndex = columnIndex +1)
{
record[recordIndex][columnIndex+1] = row.getCell(columnIndex);
if((columnIndex+1)==4)
{
record[recordIndex][columnIndex+1] = ci_model.boolean_number(row.getCell(columnIndex).toString());
}
}
recordIndex = recordIndex + 1;
if(recordIndex == 500)
{
this.insert_record(record);
arrayClear(record);
request.help.debug.collect_garbage();
recordIndex = 1;
}
}
this.insert_record(record);
arrayClear(record);
}
FileIn.close();

我正在使用 ColdFusion 8。

最佳答案

最好的办法是将数据导入临时表中。然后使用ColdFusion将数据从临时表导入到主表。这样,您就可以使用 ColdFusion 简单地导入数据 block ,而不是一次全部导入。要导入到 SQL Server,您所需要做的就是使用导入工具,对于 mySQL,您可以使用多种方法。我个人只是使​​用 csv 文件导入。我知道这个过程不太直接,但它会给您的 ColdFusion 过程带来更少的压力,并给您的 SQL 服务器带来更多压力。

另一个建议是确保您的查询或您的页面没有超时。在 URL 之后添加 ?requestTimeout=1000 也可以阻止您的进程超时。我知道这是一个 java 错误,但如果您的进程持续时间太长,则可能会超时。

关于java - ColdFusion 8 读取大型 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18787668/

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