Coldfusion 读取excel并插入数据库
我正在使用以下代码来处理插图:但是它占用了太多的时间,我如何增强它或使其工作更快:Coldfusion 读取excel并插入数据库,coldfusion,cfspreadsheet,Coldfusion,Cfspreadsheet,我正在使用以下代码来处理插图:但是它占用了太多的时间,我如何增强它或使其工作更快: <cfspreadsheet action="read" excludeheaderrow="yes" headerrow="1" rows="2-65536" query="mySheet" src="#dest#\#newfile#" sheet="1"> <cftry> <cfquery datasource="#request.dsn#" name=
<cfspreadsheet action="read" excludeheaderrow="yes" headerrow="1" rows="2-65536" query="mySheet" src="#dest#\#newfile#" sheet="1">
<cftry>
<cfquery datasource="#request.dsn#" name="myInsert">
<cfoutput>
<cfloop query="mySheet">
INSERT INTO mytable(memberID,lastname,firstname,pid,pname,gender,dob,workphone,homephone,address1,address2,city,county,state,zip,marketValue)
values('#mySheet.mem_id##RandRange(1,100)#','#mySheet.MEM_LAST_NAME#','#mySheet.MEM_FIRST_NAME#','#mySheet.PCP_ID#','#mySheet.pcp_name#','#mySheet.gender#','#mySheet.dob#','#mySheet.WORKTELEPHONENUMBER#','#mySheet.HOMETELEPHONENUMBER#','#mySheet.ADDRESSLINE1#','#mySheet.ADDRESSLINE2#','#mySheet.CITY#','#mySheet.COUNTY#','#mySheet.state#','#mySheet.zip#','#mySheet.GROUPNAME#')
</cfloop>
</cfoutput>
</cfquery>
插入mytable(memberID、lastname、firstname、pid、pname、性别、dob、工作电话、家庭电话、地址1、地址2、城市、县、州、邮政编码、市场价值)
值('#mySheet.mem#u id##RandRange(1100)#“两,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,","mySheet.ADDRESSLINE2","mySheet.CITY","mySheet.country","mySheet.state","mySheet.zip","mySheet.GROUPNAME"
excel工作表中的记录超过50000条以下是一种处理方法:
- 将整个内容(cfspreadsheet和所有插入项)放入一个函数中,以便它可以在后台运行
- 将电子表格查询(上载结果)保存到会话变量中
- 上传完成后,分批插入查询;在每个批中,将任何问题添加到会话范围内的反馈数组中
- 在用户端,有一个页面告诉用户事情正在“工作…”,并在出现反馈问题时重新加载和显示反馈问题(最好使用ajax)
randRange
不保证是唯一的。如果您使用它来确保memberID
是唯一的值,那么它不是一个好的选择。2) 您肯定应该使用cfqueryparam
。它的好处之一是在循环中执行相同的sql语句时增强了执行能力。