gpt4 book ai didi

python - 大容量插入错误代码 3 : The system cannot find the path specified

转载 作者:太空狗 更新时间:2023-10-30 02:02:19 25 4
gpt4 key购买 nike

我正在尝试使用 pyodbc 将本地文件批量插入到远程 MS_SQL 数据库中。我能够连接到数据库,并且能够 INSERT INTO 表,就像我以前做过的那样。我遇到问题的地方是 BULK INSERT

我正在使用 BULK INSERT 来加速我的 INSERT 过程。

代码如下所示:

statement = """ BULK INSERT BulkTable FROM 'C:\\Users\\userName\\Desktop\\Folder\\Book1.csv' WITH (
FIRSTROW=2,
FIELDTERMINATOR=',',
ROWTERMINATOR = '\\n'
);
"""
cursor.execute(statement)
cnxn.commit()

此代码会产生此错误:

Traceback (most recent call last):
File "tester.py", line 41, in <module> cursor.execute(statement)
pyodbc.ProgrammingError:
('42000', '[42000] [Microsoft][SQL Server Native Client 11.0][SQL Server] Cannot bulk load because the file "C:\\Users\\userName\\Desktop
\\Folder\\Book1.csv" could not be opened.
Operating system error code 3(The system cannot find the path specified.). (4861) (SQLExecDirectW)')`

我真的不明白为什么它不能打开文件,因为路径肯定是正确的。

如果您需要更多信息,请告诉我。

最佳答案

“我正在尝试将本地文件批量插入到远程 MS_SQL 数据库中”

您的方法无效,因为文件规范 'C:\\Users\\userName\\Desktop\\Folder\\Book1.csv' 只是工作站上的有效路径运行你的 Python 代码,但是 BULK INSERT documentation解释说

data_file must specify a valid path from the server on which SQL Server is running. If data_file is a remote file, specify the Universal Naming Convention (UNC) name.

(强调我的)。也就是说,BULK INSERT 语句正在服务器上 运行,因此就服务器而言,其他机器(如您的工作站)上的文件规范实际上是“远程文件”。换句话说,SQL Server 会在服务器本身上寻找名为 C:\Users\userName\Desktop\Folder\Book1 的文件,如果失败,它会引发“找不到路径”错误。

为了使用 BULK INSERT,您需要要么

  1. 将文件放在 SQL Server 可以“看到”的网络共享上,然后提供该文件的 UNC 路径,或者

  2. 将文件上传到 SQL Server 上的本地文件夹,然后提供文件的本地(服务器)路径。

如果这些替代方案都不可行,那么 Python 的另一个选择是使用 subprocess模块调用 SQL Server 的 bcp utility将本地文件中的数据上传到 SQL Server 数据库。

关于python - 大容量插入错误代码 3 : The system cannot find the path specified,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42537100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com