11w行的excel用python pyodbc读后写入sqlserver
PHP中文网
PHP中文网 2017-04-17 11:23:47
[Python讨论组]
#根据索引获取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列

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(1)
怪我咯

我的建议是将 excel 转成 csv ,然后 sqlserver 应该有命令行版本的导入工具吧(这个应该最节省时间了),如果数据库没有在本机,应试选择先将导出的 csv 文件上传到服务器,这样虽然会有额外的传输时间,也会快很多。

如果觉得这样比较麻烦,就批量执行 insert ,比如每20条进行一次批量 insert 和 commit ,自己调整吧。

如果对导入数据后不需要立即反馈,可以写成定时任务,后台运行,然后任务跑完后发通知就好了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号