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)

超过50000?我猜其中有65536条…插入数据后页面请求上是否还有其他情况发生?是的,它显示插入的总记录,并为失败的onesWell生成日志,在此处更新,使用POI实用程序解决,但是奇怪的是Cfspreadsheet不需要比Ben Nadelt的定制POI实用程序更快这与你的问题无关,但是。。1)
randRange
不保证是唯一的。如果您使用它来确保
memberID
是唯一的值,那么它不是一个好的选择。2) 您肯定应该使用
cfqueryparam
。它的好处之一是在循环中执行相同的sql语句时增强了执行能力。