2013-06-28 75 views
1

我用下面的代碼來處理插圖:但它佔用太多的時間,我怎麼能提高,或使工作更快:閱讀Excel和插入到數據庫

<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

+0

超過50000?我猜他們有65536 ... – duncan

+0

數據插入後,頁面請求上發生了什麼? –

+0

是的,它顯示插入的總記錄,併爲失敗的記錄生成日誌 –

回答

0

下面就來處理它的一種方法:

  • 把整個事情(cfspreadsheet和所有刀片)爲threaded功能,因此它可以在後臺運行
  • 將電子表格查詢(上載結果)保存到會話變量中
  • 上傳完成後,請批量插入查詢;在每批中將任何問題添加到反饋陣列中,該反饋陣列也在會話範圍內
  • 在用戶端,有一個頁面告訴用戶事情正在「正在...」並重新加載並顯示反饋問題(最好用ajax)