30

I'm using BULK INSERT to import a CSV file. One of the columns in the CSV file contains some values that contain fractions (e.g. 1m½f).

I don't need to do any mathematical operations on the fractions, as the values will just be used for display purposes, so I have set the column as nvarchar. The BULK INSERT works but when I view the records within SQL the fraction has been replaced with a cent symbol (¢) so the displayed text is 1m¢f.

I'm interested to understand why this is happening and any thoughts on how to resolve the issue. The BULK INSERT command is:

BULK INSERT dbo.temp FROM 'C:\Temp\file.csv' WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n' ); 
5
  • Does the data literally contain the one-half character? Commented Dec 21, 2012 at 20:44
  • Yes, it contains the ½ character as opposed to 1/2. Commented Dec 21, 2012 at 20:50
  • @AaronBertrand, the Bulk Insert is: code BULK INSERT dbo.temp FROM 'C:\Temp\file.csv' WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n' ); The Collation is Latin1_General_CI_AS. How do I check if the file is marked as Unicode? Commented Dec 21, 2012 at 21:06
  • You can check if the file is Unicode by, for example, opening it in Notepad and then going to File > Save As. Depending on the version of Windows you should see an "Encoding" drop-down somewhere with options like ANSI, UTF-8, Unicode, Unicode big endian... Commented Dec 21, 2012 at 21:11
  • @AaronBertrand, thanks - it shows ANSI. Commented Dec 21, 2012 at 21:15

1 Answer 1

57

You need to BULK INSERT using the CODEPAGE = 'ACP', which converts string data from Windows codepage 1252 to SQL Server codepage.

BULK INSERT dbo.temp FROM 'C:\Temp\file.csv' WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n', CODEPAGE = 'ACP'); 

If you are bringing in UTF-8 data on a new enough version of SQL Server:

[...] , CODEPAGE = '65001'); 

You may also need to specify DATAFILETYPE = 'char|native|widechar|widenative'.

Sign up to request clarification or add additional context in comments.

3 Comments

This was also what I needed to correctly bulk insert ansii text with accented characters, such as è, in it.
Thank you @aaron bertrand. It worked partially for me. I am facing issues while inserting accented characters. For example: ä is shown as ä
@user1417294 What is the encoding of the file, the data type and collation of the column, and the collation of the database and instance?

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.