2012-05-24 10 views
8

के साथ एसएसआईएस के साथ एक टेक्स्ट फ़ाइल पढ़ना एक समस्या में चल रहा है जहां मुझे एक टेक्स्ट फ़ाइल प्राप्त होती है जिसमें एलएफ के ईओएल के रूप में होता है। कभी-कभी वे फ़ाइल को सीआरएलएफ के साथ ईओएल के रूप में भेजते हैं। क्या किसी के पास कोई अच्छा विचार है कि मैं एसएसआईएस को ईओएल के रूप में कैसे इस्तेमाल कर सकता हूं?सीआरएलएफ या एलएफ

नोटपैड ++ के साथ यह एक बहुत ही आसान कन्वर्ट ऑपरेशन है जिसे मैं कभी भी बदल सकता हूं, हालांकि, यह मैनुअल है और मैं इसे स्वचालित होना चाहता हूं।

धन्यवाद,

संपादित करें। मैंने डेटाफ्लो से पहले Swiss File Knife का उपयोग कर इसे (लेकिन सही नहीं) तय किया।

उत्तर

1

मैं दूसरी स्विस फ़ाइल चाकू के लिए ओ पी के वोट।

कि एकीकृत करने के लिए, मैं एक निष्पादित प्रक्रिया कार्य जोड़ने के लिए किया था: exeproc

हालांकि, मैं संकुल कि के लिए-प्रत्येक फ़ाइल छोरों को चलाने का एक समूह है, इसलिए मैं कुछ BIML की जरूरत - शायद यह हूँ अगली आत्मा की मदद करें।

<ExecuteProcess Name="(EXE) Convert crlf for <#= tableName #>" 
       Executable="<#= myExeFolder #>sfk.exe"> 
    <Expressions> 
    <Expression PropertyName="Arguments"> 
     "crlf-to-lf " + @[User::sFullFilePath] 
    </Expression> 
    </Expressions> 
</ExecuteProcess> 
1

सीआरएलएफ को एलएफ में बदलने के लिए आपके फ़ाइल स्रोत के बाद रीप्लेस ऑपरेशन के साथ व्युत्पन्न कॉलम के बारे में कैसे?

+1

केवल इसके साथ समस्या है, आपको फ़ाइल कनेक्शन प्रबंधक का उपयोग करके फ़ाइल लोड करने की आवश्यकता होगी इससे पहले कि आप डेटा प्रवाह में व्युत्पन्न कॉलम रूपांतरण का उपयोग कर सकें। – GShenanigan

6

यदि लाइन टर्मिनेटर हमेशा एक या दूसरे होते हैं, तो मैं 2 फ़ाइल कनेक्शन मैनेजर स्थापित करने का सुझाव दूंगा, एक "सीआरएलएफ" पंक्ति डिलीमीटर के साथ, और दूसरा "एलएफ" पंक्ति डिलीमीटर के साथ।

फिर, एक बूलियन पैकेज वैरिएबल (@IsCrLf जैसा कुछ) बनाएं और इसे अपने पैकेज में स्कॉप करें। अपने एसएसआईएस पैकेज में पहला कदम Script Task बनाएं, जिसमें आप एक फ़ाइल स्ट्रीम में पढ़ते हैं, और यह पता लगाने का प्रयास करें कि लाइन टर्मिनेटर क्या है (स्ट्रीम में जो भी मिलता है उसके आधार पर)। तदनुसार अपने चर के मान सेट करें।

फिर, अपने नियंत्रण प्रवाह में स्क्रिप्ट कार्य के बाद, 2 अलग डाटा प्रवाह (प्रत्येक फ़ाइल कनेक्शन प्रबंधक के लिए), बना सकते हैं और "अभिव्यक्ति और बाधा" कनेक्टर्स पर जो डेटा प्रवाह का उपयोग करने के निर्दिष्ट करने के लिए करने के लिए एक Precedence Constraint सेट का उपयोग @IsCrLf चर के मान के आधार पर।

नीचे दिए गए सुझाए गए नियंत्रण प्रवाह का उदाहरण।

Example SSIS Control Flow

+0

अच्छी तरह से किया गया। मुझे सादगी के लिए लगता है हालांकि मैं स्विसफाइलकिनीफ के साथ रहना चाहता हूं। फ्लैट फ़ाइल के बाद डेटा प्रवाह चरण बहुत लंबे और जटिल हैं और मैं तर्क को डुप्लिकेट नहीं करना चाहता हूं। –

+0

यदि वे बड़ी फ़ाइलें नहीं हैं तो आप अपने स्क्रिप्ट कार्य में, संपूर्ण फ़ाइल को स्मृति में रखे ऑब्जेक्ट वेरिएबल में लोड कर सकते हैं और स्क्रिप्ट स्रोत का उपयोग करके एक ही डेटा फ़्लो में भेज सकते हैं। हालांकि स्विसफ़ाइलकिनीफ पर शायद इसका कोई फायदा नहीं है। यह एक अच्छी उपयोगिता है, निश्चित रूप से इसे जांच रहा है! – GShenanigan

+1

हालांकि यह एक वैध समाधान है, क्या यह सिर्फ मुझे है या एसएसआईएस से नफरत करने का यह एक और कारण है? –

संबंधित मुद्दे