2011-12-25 5 views
49

से आयात करते समय मेरे पास चार टेक्स्ट कॉलम के साथ एक एक्सेल फ़ाइल है: उनमें से एक को शॉर्टडिस्क्रिप्शन कहा जाता है जिसका सबसे लंबा मूल्य होता है। मैंने SQL सर्वर 2008 डेटाबेस में एक तालिका बनाई है, जिसमें चार कॉलम हैं और शॉर्टडिस्क्रिप्शन कॉलम प्रकार NvarChar (Max) पर सेट है।पाठ को छोटा कर दिया गया था या लक्ष्य कोड पृष्ठ में एक या अधिक वर्णों का कोई मिलान नहीं था जब Excel फ़ाइल

लेकिन एसएसआईएस आयात और निर्यात संवाद का उपयोग करते समय, मुझे शीर्षक में उल्लिखित त्रुटि मिलती है, भले ही मैंने ऑनट्रुनेशन विकल्प को अनदेखा करने के लिए सेट किया हो।

मैंने कॉलम डेटा को साफ़ करने का प्रयास किया, और यह सफल हुआ (इसलिए मैंने सुनिश्चित किया कि समस्या शॉर्टडिस्क्रिप्शन कॉलम में है)। मैंने पूरे डेटा को किसी अन्य एक्सेल कार्य पुस्तक में कॉपी करने की कोशिश की, और अभी भी कोई भाग्य नहीं है।

कोई विचार ???

उत्तर

60

मुझे लगता है कि आप एसएसआईएस संवाद में एक्सेल स्रोत का उपयोग करके इसे आयात करने का प्रयास कर रहे हैं?

यदि ऐसा है, तो समस्या यह है कि एसएसआईएस एक्सेल स्रोत बनाता है जब आपकी स्प्रेडशीट की शुरुआत में कुछ पंक्तियों का नमूना नमूना करता है। यदि [शॉर्टडिस्क्रिप्शन] कॉलम पर यह कुछ भी बड़ा नहीं देखता है, तो यह 255 वर्ण टेक्स्ट कॉलम पर डिफ़ॉल्ट होगा।

तो एक स्तंभ उस कटाव के बिना डेटा की बड़ी मात्रा के साथ पंक्तियां हैं से डेटा आयात करने, वहाँ दो विकल्प हैं:

  1. तुम्हें यकीन करना चाहिए कि [ShortDescription] नमूना कम से कम एक में स्तंभ पंक्तियों में 255 वर्णों से अधिक मान होता है। ऐसा करने का एक तरीका आरईपीटी() फ़ंक्शन का उपयोग कर रहा है, उदा। = आरईपीटी ('जेड', 4000), जो अक्षर 'z' के 4000 की स्ट्रिंग बनाएगा।
  2. आपको ऐसी पंक्ति शामिल करने के लिए जेट एक्सेल ड्राइवर द्वारा नमूने वाली पंक्तियों की संख्या में वृद्धि करनी होगी। आप HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel के तहत TypeGuessRows के मान को बढ़ाकर नमूने वाली पंक्तियों की संख्या बढ़ा सकते हैं (यदि आपका सिस्टम x64 है तो HKEY_LOCAL_MACHINE\SOFTWARE\wow6432node\Microsoft\Jet\4.0\Engines\Excel के तहत) रजिस्ट्री कुंजी।

आप इन दो लिंक पर अधिक जानकारी देख सकते हैं:

आगे व्याख्या करने के लिए, लघु उद्योगों 3 वस्तुओं जादूगर के पर्दे के पीछे बनाता है, एक एक्सेल डेटा स्रोत ऑब्जेक्ट, एक SQL तालिका गंतव्य ऑब्जेक्ट, और उनके बीच डेटा प्रवाह ऑपरेटर। एक्सेल स्रोत ऑब्जेक्ट स्रोत डेटा को परिभाषित करता है और अन्य दो ऑब्जेक्ट्स से स्वतंत्र होता है। तो जब यह बनाया गया है, मैंने वर्णित नमूनाकरण किया है और स्रोत कॉलम आकार सेट है। तो जब तक डेटा प्रवाह ऑपरेटर निष्पादित करता है और डेटा को एक्सेल से डेटा खींचने की कोशिश करता है, तो यह पहले से ही एक डेटा स्रोत को देख रहा है जो 255 वर्णों तक सीमित है।

+3

जो आश्चर्यजनक रूप से सही है !!! लेकिन ऐसा क्यों हो रहा है यदि गंतव्य कॉलम डेटा की अधिकतम लंबाई स्वीकार करने के लिए सेट है ?? तो स्रोत कॉलम की लंबाई के साथ क्या करना है ??? –

+7

"ध्यान दें 64-बिट सिस्टम के लिए, संबंधित कुंजी इस प्रकार है: ' HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ जेट \ 4.0 \ इंजन \ excel' "- [कड़ी] (http://support.microsoft.com/ केबी/281517) लेकिन स्पष्ट रूप से मूल्य केवल 16 तक हो सकता है? ऐसा कोई सुधार नहीं लगता है - लेकिन मैंने इसका परीक्षण नहीं किया है। – PeterX

28

मुझे एक फ्लैट, सीमांकित फ़ाइल से SQL सर्वर में आयात करते समय यह समस्या थी। समाधान अपमानजनक कॉलम (त्रुटि संदेश से) के लिए 'आउटपुट कॉलमविड्थ' मान को अपडेट करना था। आयात विज़ार्ड में 'डेटा स्रोत चुनें' फॉर्म पर, मेरा स्रोत फ्लैट फ़ाइल था। बाएं फलक पर, 'उन्नत' चुनें। फिर आप व्यक्तिगत कॉलम के गुण सेट कर सकते हैं। मेरे मामले में, मेरे अधिकांश कॉलम के लिए 'आउटपुट कॉलमविड्थ' को '50' पर डिफॉल्ट किया गया था। मैंने बस इसे एक बड़े मूल्य पर अपडेट किया जो फ्लैट फ़ाइल से मूल्य को कम नहीं करेगा।

enter image description here

+3

वैकल्पिक रूप से, DT_STR की बड़ी पर्याप्त सीमा अनुमान लगाने के बजाय, आप DT_NTEXT SSIS प्रकार का चयन कर सकते हैं, जो MSSQL nvarchar (अधिकतम) या अप्रचलित ntext प्रकार के बराबर है। – eidgenossen

+0

आउटपुट कॉलमविड्थ को अपडेट करने और डेटाटाइप DT_WSTR का उपयोग करने का एक संयोजन मेरे लिए काम करता है। SQL सर्वर 2014 में, DT_WSTR में आउटपुट कॉलम विड्थ 4,000 यूनिकोड वर्णों तक विस्तृत हो सकता है। इसके परिणामस्वरूप नीचे 40-लव के उत्तर के समान कुछ हुआ। – Jasper

+0

क्या आप इन सभी कॉलम को एक बार में बदल सकते हैं? मेरे पास कॉलम की एक बड़ी मात्रा है और मैं सोच रहा था कि यह संभव था या नहीं। – Lostaunaum

5

मैं इस त्रुटि जब मैं एक बड़ी फ़ाइल है कि इसमें कुछ चीनी अक्षरों था, और भी कुछ ऐसी अमान्य (बड़े) तार आयात करने के लिए कोशिश कर रहा था मिल गया।

टेक्स्ट फ़ाइल यूटीएफ 8 प्रारूप में सहेजी गई थी।

मेरी सेटिंग्स:

जनरल विकल्प पर (कुछ भी परिवर्तन नहीं किया):

- Locale: English (United States) 
- Unicode: Unchecked 
- Code Page: 65001 (UTF-8) 

छोड़ दिया

- DataType (for column): Unicode String [DT_WSTR] (changed) 
- OutputColumnWidth: 4000 (that's the maximum) (changed) 

पर एक उन्नत विकल्प पर समीक्षा डेटा प्रकार है मैपिंग

- On Error: Ignore 
- On Truncation: Ignore 

मेरे लक्ष्य स्तंभ था चौड़ाई = 50.

मैं इन सेटिंग्स के साथ कोई त्रुटि मिला है।

+0

इसे पोस्ट करने के लिए धन्यवाद। मुझे उपरोक्त उल्लिखित मुद्दे के कारण मेरे आयात के दौरान एक ही त्रुटि संदेश प्राप्त हो रहा था: विदेशी वर्णों वाले डेटा को उन विदेशी प्रकारों वाले फ़ील्ड में आयात करने का प्रयास करना जो विदेशी वर्णों को स्वीकार नहीं करते थे। मेरा फिक्स, अल्पावधि, उस डेटा से विदेशी पात्रों को निकालना था जिसे मैं आयात करने की कोशिश कर रहा था। – cjo30080

7

यह काम करने के लिए प्राप्त करने के लिए एक आसान तरीका फ़ाइल आप आयात और पहली जगह में एक नई पंक्ति बनाना चाहते हैं को संपादित करना। इस तरह यह हमेशा नमूना होगा। फिर किसी भी कॉलम के लिए जिसमें 255 वर्ण हो सकते हैं, बस सेल में 255 वर्ण जोड़ें और यह काम करेगा। आपके आयात के बाद, आपके द्वारा जोड़े गए जंक पंक्ति को हटाएं।

+2

यह मेरे लिए सफलता का सबसे छोटा रास्ता था। –

+0

हम्म, सुनिश्चित नहीं है कि यह समाधान से अलग कैसे है। यह समाधान stackexchange के लिए अधिक उपयुक्त लगता है। ~ (: – dcary

1

रजिस्ट्री घटक का एक वैकल्पिक स्थान है जिसे इस समस्या को हल करने के लिए बदला जाना आवश्यक है।

आप इसे

Start-> रन> RegEdit-> \ Microsoft HKEY_LOCAL_MACHINE \ SOFTWARE \ जेट \ 4.0 \ इंजन \ एक्सेल

पर नहीं मिल रहा है तो

में देखो

Start-> रन> RegEdit-> HKEY_LOCAL_MACHINE -> सॉफ्टवेयर -> Wow6432Node -> माइक्रोसॉफ्ट -> जेट -> 4.0 -> इंजन -> एक्सेल

1

मेरे लिए इस लिंक पर मुझे मदद मिली: https://support.microsoft.com/en-us/kb/189897

  1. कॉपी पंक्ति जो एक्सेल की शुरुआत करने के लिए सेल मूल्य> 255 वर्ण है, एक्सेल
  2. परिवर्तन रजिस्ट्री मान में उस पंक्ति को पहली पंक्ति बनाने उपरोक्त लिंक से।
संबंधित मुद्दे