Python – 用Excel中的数据填充表MSSQL

我有一个xlsx文件,4列和68k +行。 我想把所有的数据放在MSSQL服务器的表中。 我做的。

def jb_treat_attributes(dicoval): conn = pymssql.connect(dicoval['MSSQL_erver'],dicoval['MSSQL_Login'],dicoval['MSSQL_Password'],dicoval['MSSQL_Database_DELTA']) cursor = conn.cursor() cursor.execute('TRUNCATE TABLE delta.Attribute') for row in load_workbook(dicoval['path_root']+'Delta/attributes/excel.xlsx').worksheets[0].iter_rows(): row = [cell.value.strip() if cell.value is not None else '' for cell in row] cursor.execute("INSERT INTO delta.Attribute VALUES (%s,%s,%s,%s)",(row[0],row[1],row[2],row[3])) conn.commit() conn.close() 

它的工作,但有340的执行时间。 它存在一个更快的方法吗?

第一个快速思考 :使用Begin Transaction来告诉你正在添加插入

把这行放在你启动cursor.execute之前

 cursor.begin() 

包装插页

没有直接的证据,但包装值有时帮助上传插页作为批处理。 (这基本上是cursor.begin()的用途。

我无法testing它,但这就是主意。 你将所有的值都收集在一个tuples list中,并将它们转换为一个string,最后执行它提供所有的值

 def jb_treat_attributes(dicoval): values = [] conn = pymssql.connect(dicoval['MSSQL_erver'],dicoval['MSSQL_Login'],dicoval['MSSQL_Password'],dicoval['MSSQL_Database_DELTA']) cursor = conn.cursor() cursor.execute('TRUNCATE TABLE delta.Attribute') for row in load_workbook(dicoval['path_root']+'Delta/attributes/excel.xlsx').worksheets[0].iter_rows(): row = [cell.value.strip() if cell.value is not None else '' for cell in row] values.append((row[0],row[1],row[2],row[3])) valueTuples = str(values)[1:-1] cursor.execute("INSERT INTO delta.Attribute VALUES " + valueTuples) conn.commit() conn.close() 

如何调用python直接执行.sql文件? 你有一个.sql文件做这样的数据库导入excel https://docs.microsoft.com/en-us/sql/relational-databases/import-export/import-data-from-excel-to-sql