SSIS फ्लोट करने के लिए एक्सेल सोर्स स्ट्रिंग को बदलने के लिए मजबूर करता है


9

एक्सेल में एक कॉलम है जिसे टेक्स्ट माना जाता है, लेकिन SSIS वहां न्यूमेरिक टेक्स्ट देखता है और स्वचालित रूप से इसे डबल-सटीक फ्लोट [DT_R8] बनाता है।

मैं इसे मैन्युअल रूप से आउटपुट शाखा के बाहरी और आउटपुट कॉलम में बदल सकता हूं, लेकिन त्रुटि आउटपुट ने मुझे संबंधित कॉलम को बदलने से मना कर दिया।

Error at Extract Stations [Excel Source [1]]: The data type for "output "Excel Source Error Output" (10)" cannot be modified in the error "output column "Group No" (29)".
Error at Extract Stations [Excel Source [1]]: Failed to set property "DataType" on "output column "Group No" (29)".

मैंने पैकेज xml को संशोधित करने की कोशिश की है। मैंने कोशिश की IMEX=1और typeguessrow=0उसमें से किसी ने भी मेरी समस्या तय नहीं की। क्या यह सब कुछ ठीक है? ऐसे लेख भी हैं जो आपको अपनी रजिस्ट्री को संशोधित करने का सुझाव देते हैं ताकि डेटा प्रकार का अनुमान लगाने से पहले एक्सेल और फिर डिफ़ॉल्ट 8 पंक्तियों को पढ़ सके। मैं इस मार्ग पर नहीं जाना चाहता क्योंकि यहां तक ​​कि अगर यह काम करना था, तो मुझे उस मशीन पर रजिस्ट्री को संशोधित करना होगा जिसे मैं पैकेज चलाने की योजना बना रहा हूं।

उदाहरण के लिए SQL nvarchar फ़ील्ड में आयात किया जाने वाला एक्सेल फ़ील्ड पढ़ता है

295.3
296.33

लेकिन वे एसक्यूएल तालिका में लिखे जा रहे हैं

295.30000000000001
296.32999999999998

मैं डेटाव्यूअर और फील्ड शो में डालता हूं

295.3
296.33

सभी तरह से जो निष्पादन सही है, लेकिन मुझे लगता है कि जब यह OLE DB गंतव्य स्रोत से टकराता है तो यह किसी तरह इसे धर्मान्तरित करता है

295.30000000000001
296.32999999999998

क्या गलत है।

उदाहरण के लिए मेरे पास V321.1 और V213.34 जैसे मूल्य भी हैं, जो निश्चित रूप से पूर्णांक नहीं हैं और जिन्हें वर्चर के रूप में संग्रहीत करने की आवश्यकता है।


टिप्पणियाँ विस्तारित चर्चा के लिए नहीं हैं; इस वार्तालाप को बातचीत में स्थानांतरित कर दिया गया है ।
पॉल व्हाइट 9

जवाबों:


2

क्या फ़ाइल को एक .csv फ़ाइल के रूप में प्राप्त करना संभव है जिसे पाठ फ़ाइल की तरह आयात किया जा सकता है और इसमें समस्या नहीं होगी? मैं आम तौर पर सभी एक्सेल फ़ाइलों को वापस मारता हूं और दूसरे प्रारूप के लिए पूछता हूं क्योंकि एसएसआईएस और एक्सेल कई स्तरों पर एक साथ नहीं खेलते हैं।


1
मैं निकट भविष्य में .csv या txt फ़ाइल में परिवर्तन को रोक रहा हूँ। चीजों को बहुत आसान बना देगा।
जुआन वेलेज़

2

ऐसा प्रतीत होता है कि इस मुद्दे को ठीक करने का कोई तरीका नहीं है। Excel स्तंभ में डेटा की पहली कुछ पंक्तियों को देखता है और हमेशा कोई फर्क नहीं पड़ता कि FLOAT को डेटाटाइप को लागू करेगा। मुझे पहले कुछ पंक्तियों (8+) में कुछ varchar वर्णों के साथ एक टेम्पलेट बनाने का एक समाधान दिया गया था, ताकि EXCEL डेटा प्रकार के रूप में उठाएगा और फिर मेरे डेटा को आयात करेगा। उस चीज़ पर जिसने मेरी मदद की है जब से मैं सोर्स सेफ का उपयोग कर रहा हूं मैं एक फाइल को "चेक इन" करने में सक्षम हूं ताकि यह मेरे पैकेज की फाइल को "रीड ओनली" बना दे ताकि विजुअल स्टूडियो मेरे पूर्व निर्धारित डेटा प्रकारों को बदल न सके।


1

चरण 1: IMEX=1; MAXROWSTOSCAN=0कनेक्शन स्ट्रिंग (जैसे Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Source\filename.xlsx;Extended Properties="EXCEL 12.0 XML;HDR=YES;IMEX=1; MAXROWSTOSCAN=0") में जोड़ें ।

चरण 2: समाधान बंद करें। पाठ संपादक में SSIS पैकेज खोलें, उन स्तंभों को ढूंढें जो पूर्व निर्धारित डेटा प्रकार पर वापस उलट रखे थे। इसे XML फ़ाइल में मैन्युअल रूप से वांछित प्रारूप में अपडेट करें।

चरण 3: SQL सर्वर डेटा टूल में पैकेज खोलें और निष्पादित करें, अब आपको फ़ाइल से डेटा लोड करने में सक्षम होना चाहिए।


क्षमा करें, लेकिन स्रोत डेटा प्रकार पैकेज में नहीं है। केवल गंतव्य स्तंभ प्रकार। यह उद्देश्य को फिर से हरा देता है, क्योंकि रूपांतरण अभी भी Microsoft के पास होता है। एक ड्राइवर (या जो भी ड्राइवर चुना जाता है), और डेटा हानि एसएसआईएस और गंतव्य तालिका में आने से पहले ही हो चुकी होती है।
इंजीनियर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.