mysql - CFloop处理速度极慢

标签 mysql coldfusion-9 cfloop cfspreadsheet

我正在自学 CF 开发,并使用共享的 CF 托管站点进行测试。

我有一个电子表格,其中包含 2500 多条数据记录,大约 15 列。该电子表格包含对该应用程序的基础至关重要的数据。它是离线维护的,并使用cffile定期上传到服务器。上传后,电子表格将逐行导入到 MySQL 表中。

问题是它花费的时间太长了。例如,它当前正在运行。在过去 43 分钟内,2500 条记录中仅添加了 192 条记录到 MySQL 表中。有没有更有效的方法来做到这一点?

如果您查看下面的代码,在 cfloop 内,它会运行 cfspreadsheet 标记,并检索当前行。然后将该行作为“CSV”数据添加到 MySQL 表中。

关于如何更有效地做到这一点有什么建议吗?

<小时/>
<cfloop index="RecordNumber" from="2" to="#Records#" step="1"> 

    <cfspreadsheet action="read"
                format="csv"
                name="siteinfo"
                src="#floc#"
                headerrow="1"
                rows="#RecordNumber#" 
                columns="1-7,15,16,22,23"
                >

    <cfset ColumnCount = ListLen(siteinfo)>
    <cfset CSVSiteData = #siteinfo#>
    <cfset EntryType = "Site_Data">


    <cfquery name="Insertsite" datasource="TechData">
        INSERT INTO sitelist (EntryType, CSVSiteData, DateInserted)
        VALUES ('#EntryType#', '#CSVSiteDataf#', '#DateInserted#')
    </cfquery>

</cfloop>

最佳答案

您每次迭代都会读取整个 XLS 文件,只是为了获取一行。只需读取文件一次(在循环之前),然后循环遍历其行。

关于mysql - CFloop处理速度极慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25828422/

相关文章:

java - [SQL]如何在一个 SELECT 中填充具有另一个表列表的对象?

sql - Coldfusion cfloop Sql 查询速度极慢

coldfusion - cfsetting的ColdFusion 9脚本语法是什么?

java - 在 Coldfusion 中使用 CFIMAP 获取最新邮件

arrays - 如何在 Coldfusion 中附加 <cfloop> 中的数组值?

coldfusion - <cfloop condition ="true"> 导致了最奇怪的错误

mysql - 在MYSQL上操作 double 的正确方法(精度)?

MySQL数据类型用于存储从零开始的整数?

mysql - 即使 MySQL 中不存在列也插入

regex - Coldfusion 字符串替换为 ReReplace