Jag kom hit innan jag letade efter en lösning för massinsättning av specialtecken. Gillade inte lösningen med UTF-16 (som skulle fördubbla storleken på csv-filen). Jag fick reda på att du definitivt KAN och det är väldigt enkelt, du gör det Jag behöver inte en fil i formatet. Det här svaret är för andra som letar efter samma sak, eftersom det inte verkar dokumenteras väl någonstans, och jag tror att detta är ett mycket vanligt problem för icke-engelsktalande personer. Lösningen är:lägg bara till CODEPAGE='65001' inuti med-satsen för bulkinsert. (65001=sidnummer för UTF-8). Det kanske inte fungerar för alla unicode-tecken som Michael O föreslår, men det fungerar åtminstone perfekt för latin, grekiska och kyrilliska, förmodligen många andra också.
Notera:MSDN-dokumentationen säger att utf-8 inte stöds, tror inte det, för mig fungerar detta perfekt i SQL Server 2008, försökte dock inte andra versioner.
t.ex.:
BULK INSERT #myTempTable
FROM 'D:\somefolder\myCSV.txt'+
WITH
(
CODEPAGE = '65001',
FIELDTERMINATOR = '|',
ROWTERMINATOR ='\n'
);
Om alla dina specialtecken är i 160-255 (iso-8859-1 eller windows-1252), kan du också använda:
BULK INSERT #myTempTable
FROM 'D:\somefolder\myCSV.txt'+
WITH
(
CODEPAGE = 'ACP',
FIELDTERMINATOR = '|',
ROWTERMINATOR ='\n'
);