Saya datang ke sini sebelum mencari solusi untuk menyisipkan karakter khusus secara massal. Tidak suka solusi dengan UTF-16 (yang akan menggandakan ukuran file csv). Saya menemukan bahwa Anda pasti BISA dan itu sangat mudah, Anda tidak' t memerlukan file format. Jawaban ini adalah untuk orang lain yang mencari hal yang sama, karena tampaknya tidak didokumentasikan dengan baik di mana pun, dan saya yakin ini adalah masalah yang sangat umum bagi orang yang tidak berbicara bahasa Inggris. Solusinya adalah:cukup tambahkan CODEPAGE='65001' di dalam pernyataan with dari sisipan massal. (65001=nomor halaman kode untuk UTF-8). Mungkin tidak berfungsi untuk semua karakter unicode seperti yang disarankan oleh Michael O, tetapi setidaknya berfungsi sempurna untuk ekstensi latin, yunani, dan cyrillic, mungkin banyak lainnya juga.
Catatan:Dokumentasi MSDN mengatakan utf-8 tidak didukung, jangan percaya, bagi saya ini berfungsi sempurna di SQL server 2008, namun tidak mencoba versi lain.
misalnya:
BULK INSERT #myTempTable
FROM 'D:\somefolder\myCSV.txt'+
WITH
(
CODEPAGE = '65001',
FIELDTERMINATOR = '|',
ROWTERMINATOR ='\n'
);
Jika semua karakter khusus Anda dalam 160-255 (iso-8859-1 atau windows-1252), Anda juga dapat menggunakan:
BULK INSERT #myTempTable
FROM 'D:\somefolder\myCSV.txt'+
WITH
(
CODEPAGE = 'ACP',
FIELDTERMINATOR = '|',
ROWTERMINATOR ='\n'
);