c# कॉलिड 6 के लिए bcp क्लाइंट से एक अमान्य स्तंभ लंबाई प्राप्त की




.net sql-server (4)

मैं सी # सर्वर से sql सर्वर 2005 में सीएसवी फ़ाइल डेटा को अपलोड करना चाहता हूं, लेकिन मैं नीचे त्रुटि का सामना कर रहा हूं -

कॉलिड 6 के लिए bcp क्लाइंट से एक अमान्य स्तंभ लंबाई प्राप्त की।

जब थोक प्रतिलिपि डेटाबेस सर्वर को लिखें


SQL बुलकॉपी विकल्प का उपयोग करके डेटाबेस स्ट्रिंग के लिए एक स्ट्रिंग पास करते समय मुझे इसी तरह की समस्या का सामना करना पड़ा। मैं जिस स्ट्रिंग से गुजर रहा था वह 3 वर्णों की थी जबकि गंतव्य स्तंभ की लंबाई varchar(20) । मैंने Trim() फ़ंक्शन का उपयोग करके यह जांचने के लिए स्ट्रिंग को ट्रिम करने की कोशिश की कि क्या स्ट्रिंग में किसी भी स्थान (अग्रणी और अनुगामी) के कारण समस्या थी। स्ट्रिंग को ट्रिम करने के बाद, इसने ठीक काम किया।

आप text.Trim() कोशिश कर सकते हैं। text.Trim()


एक्सेल में डेटा स्तंभों में से एक (कॉलम आईडी 6) में एक या अधिक सेल डेटा होते हैं जो डेटाबेस में डेटाकोलेमेंट डेटाटाइप लंबाई से अधिक है।

एक्सेल में डेटा को सत्यापित करें। डेटाबेस तालिका स्कीमा के अनुपालन में इसके प्रारूप के लिए एक्सेल में डेटा को भी सत्यापित करें।

इससे बचने के लिए, डेटाबेस तालिका में स्ट्रिंग डेटाटाइप की डेटा-लंबाई को पार करने का प्रयास करें।

उम्मीद है की यह मदद करेगा।


कोड का महान टुकड़ा, साझा करने के लिए धन्यवाद!

मैं वास्तविक DataMemberName को एक त्रुटि पर एक ग्राहक को वापस लाने के लिए प्रतिबिंब का उपयोग करके समाप्त हुआ (मैं WCF सेवा में बल्क सेव का उपयोग कर रहा हूं)। उम्मीद है कि किसी और ने मुझे कैसे उपयोगी पाया होगा।

static string GetDataMemberName(string colName, object t) {
  foreach(PropertyInfo propertyInfo in t.GetType().GetProperties()) {
    if (propertyInfo.CanRead) {
      if (propertyInfo.Name == colName) {
        var attributes = propertyInfo.GetCustomAttributes(typeof(DataMemberAttribute), false).FirstOrDefault() as DataMemberAttribute;
        if (attributes != null && !string.IsNullOrEmpty(attributes.Name))
          return attributes.Name;
        return colName;
      }
    }
  }
  return colName;
}


आपके द्वारा बल्क इंसर्ट / कॉपी की जा रही तालिका में स्तंभों के आकार की जाँच करें। varchar या अन्य स्ट्रिंग कॉलम को विस्तारित करने की आवश्यकता हो सकती है या आपके द्वारा डाले जा रहे मूल्य को ट्रिम करने की आवश्यकता होती है। स्तंभ क्रम भी तालिका में समान होना चाहिए।

उदाहरण के लिए, varchar कॉलम का आकार 30 से 50 => तक बढ़ाएं

अन्य टेबल [dbo]। [तालिका नाम] ALTER COLUMN [कॉलम नाम] वर्चर (50)





sql-server-2005