BULK INSERT 4866和7301

时间:2016-01-31 06:19:59

标签: sql sql-server bulkinsert

尝试使用以下行在Bocket中导入数据,但收到错误:

  

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

     

Msg 7301,Level 16,State 2,Line 3
  无法从OLE DB提供程序" BULK"获取所需的接口(" IID_IColumnsInfo")对于链接服务器"(null)"。

我的陈述有什么问题吗?当我使用导入向导时它工作正常。

BULK INSERT BICX.dbo.raw
FROM 'D:\NEW_CDR\NEW.txt'
WITH
(
   FIRSTROW = 5,
   FIELDTERMINATOR = ',',
   ROWTERMINATOR = '\n'
);

1 个答案:

答案 0 :(得分:1)

如你所说,该表包含95列,并且错误表示列96太长,您的行分隔符就会出现问题。

如果您的文件来自Windows系统,则很可能是\r\n,或者如果不起作用,您可以尝试0x0a

BULK INSERT BICX.dbo.raw
FROM 'D:\NEW_CDR\NEW.txt'
WITH
(
   FIRSTROW = 5,
   FIELDTERMINATOR = ',',
   ROWTERMINATOR = '\r\n'
);

BULK INSERT BICX.dbo.raw
FROM 'D:\NEW_CDR\NEW.txt'
WITH
(
   FIRSTROW = 5,
   FIELDTERMINATOR = ',',
   ROWTERMINATOR = '0x0a'
);