CSV文件的SQL Server BULK INSERT错误(“ IID_IColumnsInfo”)错误

时间:2018-10-23 15:29:44

标签: sql-server bulkinsert

我是SQL Server的新手,请原谅我有点菜鸟。

此处显示的代码返回以下错误:

  

无法从OLE DB提供程序“ BULK”获得链接服务器“(空)”的所需接口(“ IID_IColumnsInfo”)。

代码:

BULK INSERT testingtable
FROM 'D:\TimeLords\data\db-test-file.csv'
WITH
    (FORMAT = 'CSV', 
     FIELDQUOTE = '"',
     FIRSTROW = 2,
     FIELDTERMINATOR = ',', 
     ROWTERMINATOR = '\n',  
     TABLOCK)

我尝试使用:

ROWTERMINATOR = '0x0a'

ROWTERMINATOR = '\r\n'

这是CSV文件:https://gyazo.com/0392b660c97e3cac27f2337993190c69

这是我的SQL表:https://gyazo.com/fbbaf6204df9bb574d8887864cc95ea0

这是完整的SQL查询:https://gyazo.com/ffe020437f07524ce44420bedeebf0d4

我已对StackOverflow进行了筛选,找不到任何有效的解决方案。任何想法将不胜感激。

谢谢

3 个答案:

答案 0 :(得分:0)

将FORMAT ='CSV'更改为DATAFILETYPE ='char'

或仅删除FORMAT ='CSV'行,因为您的文件可能不符合RFC 4180。

BULK INSERT testingtable
FROM 'D:\TimeLords\data\db-test-file.csv'
WITH
    (FIELDQUOTE = '"',
     FIRSTROW = 2,
     FIELDTERMINATOR = ',', 
     ROWTERMINATOR = '\n',  
     TABLOCK)

此错误对我有用。

答案 1 :(得分:0)

还有另一个潜在的罪魁祸首。我一直在SQL Server 2017 Express中运行BULK INSERT,并且我的语法使用FORMAT ='CSV'和ROWTERMINATOR'\ n'-并且已经工作了好几个月了。

我在另一个系统中添加了一个新列,在该系统中我通常将数据导出为CSV,而当我再次进行批量插入时,该列失败了,因为我的CSV中有一个额外的列未对齐与我的SQL表中的列。 DOH!我只需要在SQL数据库中添加相同的新列,一切就恢复了。我这是一个愚蠢的错误,但也许会对其他人有所帮助。

答案 2 :(得分:0)

旧帖子,但是,嘿,所有知识都可以帮助您。如果您使用CSV其他编码或类型(例如,如果您为Macintosh或UTF-8保存CSV(如在Excel中一样),则与FORMAT ='CSV'不兼容。您可以尝试使用其他选项,例如行终止符='\ r',同时删除FORMAT ='CSV',这对于非基于Windows的CSV文件而言对我来说是成功的。