SQL 无法批量加载。文件“c:\data.txt”不存在
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/2850205/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Cannot bulk load. The file "c:\data.txt" does not exist
提问by Daniel Brink
I'm having a problem reading data from a text file into ms sql. I created a text file in my c:\ called data.txt, but for some reason ms sql server cannot find the file. I get the error "Cannot bulk load. The file "c:\data.txt" does not exist." Any ideas?
我在将文本文件中的数据读入 ms sql 时遇到问题。我在我的 c:\ 中创建了一个名为 data.txt 的文本文件,但由于某种原因 ms sql server 找不到该文件。我收到错误“无法批量加载。文件“c:\data.txt”不存在。” 有任何想法吗?
The data file (yes I know the data looks crappy, but in the real world thats how it comes from clients):
数据文件(是的,我知道数据看起来很糟糕,但在现实世界中,这就是它来自客户端的方式):
01-04 10.338,18 0,00 597.877,06- 5 0,7500 62,278-
06-04 91.773,00 9.949,83 679.700,23- 1 0,7500 14,160-
07-04 60.648,40 149.239,36 591.109,27- 1 0,7500 12,314-
08-04 220.173,70 213.804,37 597.478,60- 1 0,7500 12,447-
09-04 986.071,39 0,00 1.583.549,99- 3 0,7500 98,971-
12-04 836.049,00 1.325.234,79 1.094.364,20- 1 0,7500 22,799-
13-04 38.000,00 503.010,49 629.353,71- 1 0,7500 13,111-
14-04 286.400,00 840.126,50 75.627,21- 1 0,7500 1,575-
The Sql:
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
回答by Alex K.
That's run on the server, so its looking for C:\data.txt
on the server's C:
drive.
那是在服务器上运行的,所以它C:\data.txt
在服务器的C:
驱动器上寻找。
Also ensure the logon your using has read permissions on C:.
还要确保您使用的登录对 C: 具有读取权限。
回答by marc_s
Is that file on the SQL Server's C:\ drive?? SQL BULK INSERT etc. always works onlywith local drive on the SQL Server machine. Your SQL Server cannot reach onto your own local drive.
该文件在 SQL Server 的 C:\ 驱动器上吗?SQL BULK INSERT 等始终仅适用于 SQL Server 计算机上的本地驱动器。您的 SQL Server 无法访问您自己的本地驱动器。
You need to put the file onto the SQL Server's C:\ drive and try again.
您需要将该文件放到 SQL Server 的 C:\ 驱动器上,然后再试一次。
Update:@bp_, ok, correct - the file can alsobe on a share that you can access from the SQL Server machine using an UNC path. But again: that share must be created first, and the user the SQL Server process is running under must have access permissions to that share. You cannot just simply grab a file from a local drive on your PC without setting up quite a bit of infrastructure overhead first
更新:@bp_,好的,正确 - 该文件也可以位于共享上,您可以使用 UNC 路径从 SQL Server 计算机访问该共享。但同样:必须首先创建该共享,并且运行 SQL Server 进程的用户必须具有该共享的访问权限。您不能只是简单地从 PC 上的本地驱动器获取文件而不先设置相当多的基础架构开销
回答by Abde
This is mostly permission issue. you may not have permission on that drive. Make sure the logon you are using has read or if possible full control permission. It worked for me on local machine.
这主要是权限问题。您可能没有该驱动器的许可。确保您使用的登录具有读取或完全控制权限。它在本地机器上对我有用。