1

我正在使用以下代码来处理插图:但是它花费了太多时间,我该如何增强它或使工作更快:

<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>

excel表格中的记录超过50000

4

1 回答 1

0

这是处理它的一种方法:

  • 将整个东西(cfspreadsheet 和所有插入)放入一个线程函数中,以便它可以在后台运行
  • 将电子表格查询(上传结果)保存到会话变量中
  • 上传完成后,批量插入查询;在每个批次中将任何问题添加到也在会话范围内的反馈数组中
  • 在用户端,有一个页面告诉用户事情正在“工作......”并重新加载并在出现反馈问题时显示它们(最好使用 ajax)
于 2013-08-06T22:30:07.453 回答