आधारित SQL सर्वर CSV आयात
<ब्लॉकक्वॉट>
1) CSV फ़ाइल डेटा में ,
. हो सकता है (अल्पविराम) बीच में (उदा:विवरण), तो मैं इन डेटा को आयात करने के लिए कैसे आयात कर सकता हूं?
समाधान
यदि आप ,
. का उपयोग कर रहे हैं (अल्पविराम) एक सीमांकक के रूप में, तो फ़ील्ड टर्मिनेटर के रूप में अल्पविराम और आपके डेटा में अल्पविराम के बीच अंतर करने का कोई तरीका नहीं है। मैं एक अलग FIELDTERMINATOR
. का उपयोग करूंगा जैसे ||
. कोड ऐसा दिखेगा और यह कॉमा और सिंगल स्लैश को पूरी तरह से हैंडल करेगा।
2) यदि क्लाइंट एक्सेल से सीएसवी बनाता है तो डेटा जिसमें अल्पविराम है " ... "
के भीतर संलग्न हैं (दोहरे उद्धरण) [नीचे के उदाहरण के रूप में] तो आयात इसे कैसे संभाल सकता है?
समाधान
यदि आप बल्क इंसर्ट का उपयोग कर रहे हैं तो डबल कोट्स को संभालने का कोई तरीका नहीं है, डेटा डबल कोट्स के साथ पंक्तियों में डाला जाएगा। डेटा को टेबल में डालने के बाद आप उन डबल कोट्स को ' से बदल सकते हैं। '।
update table
set columnhavingdoublequotes = replace(columnhavingdoublequotes,'"','')
<ब्लॉकक्वॉट> 3) अगर कुछ पंक्तियों में खराब डेटा है, तो हम कैसे ट्रैक करते हैं, जो आयात छोड़ देता है?(क्या आयात करने योग्य पंक्तियों को आयात नहीं करता है)?
समाधान
अमान्य डेटा या प्रारूप के कारण तालिका में लोड नहीं की गई पंक्तियों को संभालने के लिए, ERRORFILE संपत्ति का उपयोग करके व्यवहार किया जा सकता है, त्रुटि फ़ाइल नाम निर्दिष्ट करें, यह त्रुटि फ़ाइल में रोशविंग त्रुटि लिख देगा। कोड जैसा दिखना चाहिए।
BULK INSERT SchoolsTemp
FROM 'C:\CSVData\Schools.csv'
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = ',', --CSV field delimiter
ROWTERMINATOR = '\n', --Use to shift the control to next row
ERRORFILE = 'C:\CSVDATA\SchoolsErrorRows.csv',
TABLOCK
)