亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

目前是沒讀取一行就commit了,跑了下大概時間好像30分鐘了,是不是太慢了點啊?

目前是沒讀取一行就commit了,跑了下大概時間好像30分鐘了,是不是太慢了點???

忽然笑 2023-05-01 15:10:33
#根據索引獲取Excel表格中的數據   參數:file:Excel文件路徑     colnameindex:表頭列名所在行的所以  ,by_index:表的索引 def excel_table_byindex(file='test.xlsx', colnameindex=0, by_index=0):     data = open_excel(file)     table = data.sheets()[by_index]     nrows = table.nrows #行數     ncols = table.ncols #列數     colnames =  table.row_values(colnameindex) #某一行數據      for rownum in range(1, nrows):         row = table.row_values(rownum)         if row:             app = []             for i in range(len(colnames)):                if (2 == table.cell_type(rownum, i)):                    if (colnames[i] == "month"):                         row[i] = int(row[i])             insert(row[0],row[1],row[2])insert 方法就是用 pyodbc 的 cursor.execute 然后commit,這里目前是沒讀取一行就commit了,跑了下大概時間好像30分鐘了,是不是太慢了點excel是有30列
查看完整描述

1 回答

?
寶慕林4294392

TA貢獻2021條經驗 獲得超8個贊

我的建議是將 excel 轉成 csv ,然后 sqlserver 應該有命令行版本的導入工具吧(這個應該最節省時間了),如果數據庫沒有在本機,應試選擇先將導出的 csv 文件上傳到服務器,這樣雖然會有額外的傳輸時間,也會快很多。

如果覺得這樣比較麻煩,就批量執行 insert ,比如每20條進行一次批量 insert 和 commit ,自己調整吧。

如果對導入數據后不需要立即反饋,可以寫成定時任務,后臺運行,然后任務跑完后發通知就好了。


查看完整回答
反對 回復 2023-05-04
  • 1 回答
  • 0 關注
  • 105 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號