(“IID_IColumnsInfo”) error with SQL Server BULK IN

2019-08-19 18:22发布

问题:

I'm new to SQL Server, so forgive me for being a bit of a noob here.

The code shown here returns the following error:

Cannot obtain the required interface ("IID_IColumnsInfo") from OLE DB provider "BULK" for linked server "(null)".

Code:

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

I've tried using:

ROWTERMINATOR = '0x0a'

and

ROWTERMINATOR = '\r\n'

This is the CSV file: https://gyazo.com/0392b660c97e3cac27f2337993190c69

This is my SQL table: https://gyazo.com/fbbaf6204df9bb574d8887864cc95ea0

And this is the complete SQL query: https://gyazo.com/ffe020437f07524ce44420bedeebf0d4

I've scouted StackOverflow and can't find any solution which works. Any ideas would be appreciated.

Thanks

回答1:

Change FORMAT = 'CSV' to DATAFILETYPE = 'char'

or just remove the FORMAT = 'CSV' line as your file may not be RFC 4180 compliant.

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

this has worked for me with this error.



回答2:

There's another potential culprit. I've been running BULK INSERTs into my SQL Server 2017 Express, and my syntax used FORMAT = 'CSV' and a ROWTERMINATOR of '\n' -- and it had been working fine for months.

I added a new column to the other system where I was routinely exporting data as a CSV, and when I went to do another BULK INSERT, it was failing because I had an extra column in my CSV that didn't line up with the columns in my SQL table. DOH! I just needed to add that same new column in my SQL db and all was well again. A stupid error on my part, but maybe it will help someone else.