Pandas 到 Sql 服务器速度 - python 批量插入?

Pandas to Sql Server speed - python bulk insert?

这可能是一个被高度讨论的话题,但我还没有找到“答案”。我每月将大表插入 Azure SQL 服务器。我用 python 和 Pandas 处理内存中的原始数据。我真的很喜欢 Pandas.

的速度和多功能性

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

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

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

但是,我正在研究如何绕过 csv 文件创建,因为我的 df 设置了所有数据类型,并且已经加载到内存中。

仅使用 python/Pandas 将此 df 传输到 SQL 服务器的最快方法是什么?我也对使用二进制文件传输等解决方案感兴趣 - 只要我消除平面文件 export/import.

谢谢

我遇到了类似的问题,我使用 BCP 实用程序解决了它。瓶颈问题的基本描述是,它似乎使用 RBAR 数据输入,如 Row-By-Agonizing-Row 插入,即一次插入 statement/record。走批量插入路线为我节省了很多时间。一旦我超过 100 万条记录的门槛,真正的好处似乎就来了,而你似乎遥遥领先。

Link to utility:https://github.com/yehoshuadimarsky/bcpandas