我需要将大量数据从 pandas 数据帧写入 MS-SQL 表(一次 1000 行甚至更多行)。
我正在使用pyodbc executmany
with fast_executemany=True
,否则每张桌子都需要几个小时。现在,出于安全原因,IT 人员希望我开始使用存储过程而不是直接访问数据库。
问题是,据我所见,SQL 怎么说呢,不如 python 灵活,而且我必须声明传递给 SP 的每个变量,所以我看不到如何将 SP 传递给df.values.tolist()
as我今天正在使用executemany
直接访问数据库的功能。
例如,假设我有一个数据框 df:
身份证姓名工资
1 乔希 10000
2 迈克尔 5000
3 萨拉 8000
今天我会使用:
cursor.fast_executemany = True
insert_str = "INSERT INTO [%s].[%s] VALUES (?, ?, ?)"
cursor.executemany(insert_str % (scheme, table), df.values.tolist()])
并且所有数据框都将立即(并且快速)插入到表中。但是,似乎不可能通过调用 SP 来做同样的事情。
有没有办法使用pyodbc executemany
存储过程?