11w行的excel用python pyodbc读后写入sqlserver
#根据索引获取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列
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我的建议是将 excel 转成 csv ,然后 sqlserver 应该有命令行版本的导入工具吧(这个应该最节省时间了),如果数据库没有在本机,应试选择先将导出的 csv 文件上传到服务器,这样虽然会有额外的传输时间,也会快很多。
如果觉得这样比较麻烦,就批量执行 insert ,比如每20条进行一次批量 insert 和 commit ,自己调整吧。
如果对导入数据后不需要立即反馈,可以写成定时任务,后台运行,然后任务跑完后发通知就好了。