我正在自学 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/