首页 > 解决方案 > 如何使用 python 3 更快地将批量 csv 数据插入 SQL Server

问题描述

操作系统:Windows 语言:Python 3

只有一列的 csv 文件:

Column1
10000ABC89GH
10000DBC29GH
10300ABC59GK
10120ANC39LH
.
.

位于服务器上的文件夹内。

我需要将此 Column1 值放入另一台服务器上的 SQL Server 表中(与放置 csv 文件的服务器不同)。

我已经使用 Pandas 完成了这项工作,但问题是它非常慢。这意味着我在 2.3 分钟内插入了 3000 条记录。这不会很好,因为我预计会收到大约 250000 条记录,并且会运行几个小时,因为我也会有多个文件。

我尝试的另一个选项是批量插入查询,但由于路径是动态的,我在查询“where”子句中得到了双反斜杠,这导致了格式错误。

如果您能提供帮助,请告诉我,并告诉我最好的方法。

标签: pythonsql-serverpython-3.xpandas

解决方案


Python 没有一流的 SQL Server 批量加载库。如果您安装了 BCP,则可以使用 BCP,如果文件位于 SQL Server 可以看到的某个位置,则可以使用 BULK INSERT。

或者您可以将数据作为 JSON 文档发送到 SQL Server 并在服务器端对其进行解析,这不是绝对最快的加载方式,但使用 pandas 逐行加载要快得多。参见例如:尝试将熊猫数据框插入临时表


推荐阅读