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