#根據索引獲取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 ,自己調整吧。
如果對導入數據后不需要立即反饋,可以寫成定時任務,后臺運行,然后任務跑完后發通知就好了。
添加回答
舉報
0/150
提交
取消