Pandas到Sql Server速度- python批量插入?



这可能是一个被高度讨论的话题,但我还没有找到答案。然而。我每月插入大表到Azure SQL Server。我用python和Pandas处理内存中的原始数据。我真的很喜欢Pandas的速度和多功能性。

示例DataFrame大小= 520万行,50列,分配250 MB内存

将处理过的Pandas DataFrame传输到Azure SQL Server始终是瓶颈。对于数据传输,我使用to_sql(与sqlalchemy一起)。我尝试了fast_executemany,各种块大小等参数。

到目前为止,我发现最快的方法是将DataFrame导出为csv文件,然后使用SSMS, bcp, Azure Blob等批量插入到SQL服务器中。

然而,我正在考虑这样做绕过csv文件创建,因为我的df已经设置了所有的dtypes,已经加载在内存中。

你最快的方法是什么转移这个df到SQL Server,仅使用python/Pandas?我也对使用二进制文件传输等解决方案感兴趣-只要我消除平面文件导出/导入。

感谢

我有一个类似的问题,我使用BCP实用程序解决了它。瓶颈问题的基本描述是,它似乎使用了RBAR数据条目,就像逐行插入一样,即一个插入语句/记录。采用批量插入方式为我节省了很多时间。真正的好处似乎是在我超过100万+记录的门槛时出现的,而你似乎远远领先于我。

链接到实用程序:https://github.com/yehoshuadimarsky/bcpandas

最新更新