Sql 无法批量加载。“文件”;c:\data.txt";不存在

Sql 无法批量加载。“文件”;c:\data.txt";不存在,sql,bulkinsert,Sql,Bulkinsert,将文本文件中的数据读入ms sql时遇到问题。我在c:\中创建了一个名为data.txt的文本文件,但由于某些原因,ms sql server找不到该文件。我收到错误“无法批量加载。文件“c:\data.txt”不存在。”有什么想法吗 数据文件(是的,我知道数据看起来很糟糕,但在现实世界中,它是如何来自客户端的): Sql: CREATE TABLE #temp ( vchCol1 VARCHAR (50), vchCol2 VARCHAR (50), vchCol3 V

将文本文件中的数据读入ms sql时遇到问题。我在c:\中创建了一个名为data.txt的文本文件,但由于某些原因,ms sql server找不到该文件。我收到错误“无法批量加载。文件“c:\data.txt”不存在。”有什么想法吗

数据文件(是的,我知道数据看起来很糟糕,但在现实世界中,它是如何来自客户端的):

Sql:

CREATE TABLE #temp
(
    vchCol1 VARCHAR (50),
    vchCol2 VARCHAR (50),
    vchCol3 VARCHAR (50),
    vchCol4 VARCHAR (50),
    vchCol5 VARCHAR (50),
    vchCol6 VARCHAR (50),
    vchCol7 VARCHAR (50)
)

BULK insert #temp
FROM 'c:\data.txt'
WITH
(
FIELDTERMINATOR = ' ',
ROWTERMINATOR = '\n'
)

select * from #temp
drop table #temp

这是在服务器上运行的,因此它在服务器的
C:
驱动器上查找
C:\data.txt


还要确保您使用的登录在C:.上具有读取权限。

该文件是否在SQL Server的C:\驱动器上??SQL大容量插入等始终仅在SQL Server计算机上的本地驱动器上工作。SQL Server无法访问您自己的本地驱动器

您需要将该文件放到SQL Server的C:\驱动器上,然后重试


更新:@bp\好的,正确-文件也可以位于共享上,您可以使用UNC路径从SQL Server计算机访问该共享。但同样:必须首先创建该共享,并且运行SQL Server进程的用户必须具有访问该共享的权限。如果不首先设置大量的基础设施开销,就不能简单地从PC上的本地驱动器抓取文件

这主要是权限问题。您可能没有该驱动器的权限。确保您使用的登录具有读取权限或完全控制权限(如果可能)。它在本地机器上对我有效

顺便说一句,大容量插入不是SQL,它是MS SQL Server的扩展。因此,对于一些人来说,我们已经做到了这一点,但。。为了让它工作,需要做哪些改变?要通过网络从本地驱动器中提取文件?或者,是否缺少一个声明,即服务器无法从某个ip或其他地方提取文件?干杯-杰里米你需要把它拉到一个联合国军司令部的股票上!!(泰米尔语)-现在,我只知道这一点。谢谢
CREATE TABLE #temp
(
    vchCol1 VARCHAR (50),
    vchCol2 VARCHAR (50),
    vchCol3 VARCHAR (50),
    vchCol4 VARCHAR (50),
    vchCol5 VARCHAR (50),
    vchCol6 VARCHAR (50),
    vchCol7 VARCHAR (50)
)

BULK insert #temp
FROM 'c:\data.txt'
WITH
(
FIELDTERMINATOR = ' ',
ROWTERMINATOR = '\n'
)

select * from #temp
drop table #temp