Tôi đến đây trước khi tìm giải pháp để chèn hàng loạt ký tự đặc biệt. Tôi không thích cách giải quyết khác với UTF-16 (sẽ tăng gấp đôi kích thước của tệp csv). Không cần tệp định dạng. Câu trả lời này dành cho những người khác đang tìm kiếm tệp tương tự, vì nó dường như không được ghi chép tốt ở bất kỳ đâu và tôi tin rằng đây là một vấn đề rất phổ biến đối với những người không nói tiếng Anh. Giải pháp là:chỉ cần thêm CODEPAGE ='65001' bên trong câu lệnh with của chèn số lượng lớn. (65001 =codepage number cho UTF-8) .Might không hoạt động với tất cả các ký tự unicode như Michael O đề xuất, nhưng ít nhất nó hoạt động hoàn hảo cho các ký tự mở rộng latin, Hy Lạp và cyrillic, có thể là nhiều ký tự khác.
Lưu ý:Tài liệu MSDN nói rằng utf-8 không được hỗ trợ, đừng tin vào điều đó, đối với tôi điều này hoạt động hoàn hảo trong SQL server 2008, tuy nhiên, tôi không thử các phiên bản khác.
ví dụ:
BULK INSERT #myTempTable
FROM 'D:\somefolder\myCSV.txt'+
WITH
(
CODEPAGE = '65001',
FIELDTERMINATOR = '|',
ROWTERMINATOR ='\n'
);
Nếu tất cả các ký tự đặc biệt của bạn ở 160-255 (iso-8859-1 hoặc windows-1252), bạn cũng có thể sử dụng:
BULK INSERT #myTempTable
FROM 'D:\somefolder\myCSV.txt'+
WITH
(
CODEPAGE = 'ACP',
FIELDTERMINATOR = '|',
ROWTERMINATOR ='\n'
);