批量插入在SQL Server中失败"列太长"

时间:2016-11-11 19:26:46

标签: sql-server csv

我正在尝试在SQL Server中运行以下命令,但它无法正常工作:

bulk insert dbo.Sales
from 'C:\Users\sram1\Downloads\SalesFile20161103\SALECOPY.TXT'
with 
(
    FIRSTROW = 1,
    FIELDTERMINATOR = '\t',
    ROWTERMINATOR = '0x0a'
)

以下是打印的错误消息:

  

Msg 4866,Level 16,State 1,Line 131
  批量加载失败。第1行第1列的数据文件中的列太长。验证是否正确指定了字段终止符和行终止符。

     

Msg 7399,Level 16,State 1,Line 131
  OLE DB提供程序" BULK"对于链接服务器"(null)"报告错误。提供商没有提供有关错误的任何信息。

     

Msg 7330,Level 16,State 2,Line 131
  无法从OLE DB提供程序中获取行" BULK"对于链接服务器"(null)"。

我在StackOverflow中查看,看到我应该更改rowterminator,我已经尝试了两个' 0x0a'和' \ r \ n'。我的数据是制表符分隔的,但在某些情况下,标签显示为2个空格,有时则更多,有时则更少。这可能是问题的根源吗?如果是这样,我该如何解决?

1 个答案:

答案 0 :(得分:1)

  

我的数据是制表符分隔的,但在某些情况下,标签显示为2个空格

没有标签字符不能是两个空格。 标签分隔并不意味着"数据在屏幕上显示时排成一行"。这意味着每个列值之间都有ASCII tab个字符。

如果这是一次性的事情,您可以将数据导入Excel,并将其导出为制表符分隔。如果它是常规事物,您将要学习如何检查文件以查找非打印字符,更改行结尾和修复分隔符。

HTH。