मैं विशेष वर्णों को बल्क में डालने के लिए एक समाधान की तलाश में यहां आया था। UTF-16 के साथ समाधान पसंद नहीं आया (जो csv फ़ाइल के आकार को दोगुना कर देगा)। मुझे पता चला कि आप निश्चित रूप से कर सकते हैं और यह बहुत आसान है, आप नहीं करते हैं। मुझे प्रारूप फ़ाइल की आवश्यकता नहीं है। यह उत्तर अन्य लोगों के लिए है जो इसे ढूंढ रहे हैं, क्योंकि यह कहीं भी अच्छी तरह से प्रलेखित नहीं लगता है, और मेरा मानना है कि यह गैर-अंग्रेजी भाषी लोगों के लिए एक बहुत ही सामान्य समस्या है। समाधान यह है:बस CODEPAGE='65001' को बल्क इंसर्ट के स्टेटमेंट के साथ जोड़ें। (65001=यूटीएफ-8 के लिए कोडपेज नंबर)। माइकल ओ द्वारा सुझाए गए सभी यूनिकोड वर्णों के लिए काम नहीं कर सकता है, लेकिन कम से कम यह लैटिन-विस्तारित, ग्रीक और सिरिलिक, शायद कई अन्य लोगों के लिए भी सही काम करता है।
नोट:एमएसडीएन दस्तावेज कहता है कि यूटीएफ -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'
);