Python批量导入Excel数据至SQL Server实战

阿橙
阿橙
发布时间:2026-10-13 | 4人浏览过
原创

本文演示了如何使用Python将Excel数据高效导入SQL Server数据库。通过结合xlrd读取Excel文件与pymssql建立数据库连接,实现了批量插入操作。示例中处理一万多条数据耗时仅1秒左右,代码逻辑清晰,适合需要快速迁移数据的场景参考。

环境配置与依赖库

运行环境为64位Windows 10系统,Python版本为3.6.4,目标数据库为SQL Server 2008R2。

近期因业务需求需将Excel数据迁移至SQL Server,尝试使用Python实现该过程。测试结果显示导入速度较快,处理一万多行数据耗时仅1秒有余,且代码实现简洁,此处不作过多赘述。

本方案主要依赖两个Python库:xlrd用于解析Excel文件,pymssql用于连接并操作SQL Server数据库。

核心代码实现


import xlrd
import pymssql
import datetime
# 连接本地sql server     地址     用户名  密码   数据库
conn = pymssql.connect("127.0.0.1:1433", "sa", "888888", "Test")
# 建立cursor
cursor = conn.cursor()
# excel文件
fname = "XXXX.xls"
#打开文件
bk = xlrd.open_workbook(fname)
#打开工作表
sh = bk.sheets()[0]
#获取行数
start_time=datetime.datetime.now()
sql3=''
# 遍历所有行
for i in range(1,sh.nrows):
  a = []
  sql = '('
  # 遍历所有列
  for j in range(sh.ncols):
    # 将excel每一列的值用,隔开
     sql += "'" + str(sh.cell(i, j).value) + "'" + ','
  # 组合成sql语句(value1,value2,value3,,)
  sql2 = sql.strip(",")
  sql3 += sql2.strip()+'),'
  # 1000行执行一次sql
  if i%1000==0:
    sql3 = sql3.rstrip(",")
    sql1 = "insert into Flow(ID, SaleDate,danwei,danweiname,huowuid,huowuname,chandi,guge,num,danjia,back,pihao,youxiaodate,jibendanwei,Userid,UserdanweiName,kehuquyu,kehuleixing,type) values %s " % sql3
    # 执行sql语句
    cursor.execute(sql1)
    sql = ""
    sql3=""
sql3 = sql3.rstrip(",")
sql1 = "insert into Flow(ID, SaleDate,danwei,danweiname,huowuid,huowuname,chandi,guge,num,danjia,back,pihao,youxiaodate,jibendanwei,Userid,UserdanweiName,kehuquyu,kehuleixing,type) values %s " % sql3
cursor.execute(sql1)
# commit提交变更
conn.commit()
# 结束时间
end_time = datetime.datetime.now()
speed = end_time - start_time
# 打印花费时间
print(speed)

以上即为利用Python将Excel数据导入SQL Server的完整示例,旨在为读者提供实用参考,欢迎支持。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表