“Column is too long” error with BULK INSERT

2020-02-10 01:31发布

I am trying to run the following command to bulk insert data from a CSV file--

 BULK INSERT TestDB.dbo.patent
 FROM 'C:\1patents.csv'
 WITH (FIRSTROW = 1,  FIELDTERMINATOR = '^', ROWTERMINATOR='\n');

The error I am getting is this--

Msg 4866, Level 16, State 1, Line 1
The bulk load failed. The column is too long in the data file for row 1, column 6.
Verify that the field terminator and row terminator are specified correctly.
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)".

Now this is the data in the first row--

 00000001^^18360713^295^4^0

And in the table the last field (corresp. to the 6th column of data above = 0) is of type 'int'.

What am I doing wrong here? Why am I getting the above error?

4条回答
你好瞎i
2楼-- · 2020-02-10 01:43

Unless the file source is Unix, chances are the file's row terminator is really

\r\n

Either use a hex editor to validate the file's terminator, or just try that as the row terminator.

查看更多
趁早两清
3楼-- · 2020-02-10 01:49

Like answered above, I had the same problem importing a csv file into SQL Server. I was using ROWTERMINATOR = '\n' and I also tried to use '\r\n' and '\r'. None of them worked.

But when using ROWTERMINATOR = '0x0a' the table loaded without problems.

I don't know the "why?" behind this, hopefully somebody else can shed light over it.

查看更多
在下西门庆
4楼-- · 2020-02-10 02:01

I faced the similar problem and came to know that unless the file is UNIX type \r\n is fine .

When you generate the format file (.fmt or .xml), notice the 3rd column from left. its called min length of column. At times sql server defaults it to 2 though you don't mention it in create script. Change that value to 0 . Sometimes you might have to allow NULL also ,so change that to zero and it should work now

查看更多
We Are One
5楼-- · 2020-02-10 02:08

I got extraction from Oracle/Unix. I replaced \r\n by ROWTERMINATOR = '0x0a' and it worked for me.
Thanks a lot !

查看更多
登录 后发表回答