Sono venuto qui prima di cercare una soluzione per l'inserimento di massa di caratteri speciali. Non mi piaceva la soluzione alternativa con UTF-16 (che raddoppierebbe le dimensioni del file CSV). Ho scoperto che puoi sicuramente CAN ed è molto facile, non lo fai non è necessario un file di formato. Questa risposta è per altre persone che cercano lo stesso, poiché non sembra essere documentato bene da nessuna parte e credo che questo sia un problema molto comune per le persone che non parlano inglese. La soluzione è:basta aggiungere CODEPAGE='65001' all'interno dell'istruzione with dell'inserto collettivo. (65001=numero codepage per UTF-8). Potrebbe non funzionare per tutti i caratteri Unicode come suggerito da Michael O, ma almeno funziona perfettamente per latino-esteso, greco e cirillico, probabilmente anche molti altri.
Nota:la documentazione MSDN dice che utf-8 non è supportato, non crederci, per me funziona perfettamente in SQL Server 2008, tuttavia non ho provato altre versioni.
es.:
BULK INSERT #myTempTable
FROM 'D:\somefolder\myCSV.txt'+
WITH
(
CODEPAGE = '65001',
FIELDTERMINATOR = '|',
ROWTERMINATOR ='\n'
);
Se tutti i tuoi caratteri speciali sono in 160-255 (iso-8859-1 o windows-1252), puoi anche usare:
BULK INSERT #myTempTable
FROM 'D:\somefolder\myCSV.txt'+
WITH
(
CODEPAGE = 'ACP',
FIELDTERMINATOR = '|',
ROWTERMINATOR ='\n'
);