Дойдох тук, преди да потърся решение за групово вмъкване на специални символи. Не ми хареса решението с UTF-16 (това би удвоило размера на csv файла). Разбрах, че определено МОЖЕТЕ и е много лесно, не нямам нужда от форматиран файл. Този отговор е за други хора, които търсят същото, тъй като изглежда не е добре документиран никъде и вярвам, че това е много често срещан проблем за хора, които не говорят английски. Решението е:просто добавете CODEPAGE='65001' вътре в изявлението with на груповата вложка. (65001=номер на кодовата страница за UTF-8). Може да не работи за всички уникод знаци, както е предложено от Michael O, но поне работи идеално за латински разширения, гръцки и кирилица, вероятно и много други.
Забележка:В документацията на MSDN се казва, че utf-8 не се поддържа, не вярвайте, за мен това работи перфектно в SQL сървър 2008, но не пробвах други версии.
напр.:
BULK INSERT #myTempTable
FROM 'D:\somefolder\myCSV.txt'+
WITH
(
CODEPAGE = '65001',
FIELDTERMINATOR = '|',
ROWTERMINATOR ='\n'
);
Ако всичките ви специални знаци са в 160-255 (iso-8859-1 или windows-1252), можете също да използвате:
BULK INSERT #myTempTable
FROM 'D:\somefolder\myCSV.txt'+
WITH
(
CODEPAGE = 'ACP',
FIELDTERMINATOR = '|',
ROWTERMINATOR ='\n'
);