2011-03-29 61 views
6

我想在我们的sql数据库的一个表中进行批量上传。这个查询之前运行良好,当我们在不同的服务器上有数据库时,但现在在新服务器上出现错误。 这里是我的全部: SQL批量导入查询:批量上传:新服务器上的“文件意外结束”

BULK 
INSERT NewProducts 
FROM 'c:\newproducts.csv' 
WITH 
(
FIELDTERMINATOR = ',', 
ROWTERMINATOR = '\n' 
) 
GO 

而且我收到的错误是:

Msg 4832, Level 16, State 1, Line 1 
Bulk load: An unexpected end of file was encountered in the data file. 
Msg 7399, Level 16, State 1, Line 1 
The OLE DB provider "BULK" for linked server "(null)" reported an error. The provider did not give any information about the error. 
Msg 7330, Level 16, State 2, Line 1 
Cannot fetch a row from OLE DB provider "BULK" for linked server "(null)". 

感谢提前任何帮助。

+0

旧服务器和新服务器上的版本/软件是什么? – roberttdev 2011-03-29 16:23:58

+0

相同,SQL服务器2008 – Laziale 2011-03-29 16:24:48

回答

0

我以前遇到过这一点,有几件事情需要找:

  1. 确保您的CSV文件中没有任何空行顶部。
  2. 确保文件末尾没有其他空白行。
  3. 确保ROWTERMINATOR实际上是\n而不是\r\n

如果你做所有这三个并仍然得到错误让我知道。

+0

布赖恩,感谢您的帮助,但我检查了所有的东西,我做了只有两行的测试,我仍然得到相同的错误 – Laziale 2011-03-29 16:29:58

+0

你检查记事本?我发现Excel在追踪无关的空格时并不是非常有用。 – 2011-03-29 16:32:05

+0

是的,在记事本中是一样的。没有额外的空白一切看起来相同,我不知道为什么我得到这个错误 – Laziale 2011-03-29 16:44:41

0

对我而言,我试图访问的文件位于SQL Sever进程无法访问的目录中。我将我的平面文件移动到SQL有权访问的目录,并且此错误已得到解决。

0

对于任何遇到此问题的人都在寻找答案,当CSV文件中的列数与您正在进行批量插入的表的列数不匹配时,也会发生此错误。