Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एसएसआईएस फ्लैट फ़ाइल स्रोत में खराब पंक्ति को कैसे छोड़ें?

समाधान अवलोकन

आप एक Flat File Connection Manager जोड़कर ऐसा कर सकते हैं डेटा प्रकार के साथ केवल एक कॉलम जोड़ें DT_WSTR और लंबाई 4000 (इसका नाम मानते हुए Column0 . है ) - तो सभी कॉलम को एक बड़ा कॉलम माना जाता है

  • Dataflow task में एक Script Component जोड़ें Flat File Source . के बाद
  • चिह्न में Column0 इनपुट कॉलम के रूप में और 17 आउटपुट कॉलम जोड़ें
  • Input0_ProcessInputRow . में विधि विभाजन Column0 सीमांकक द्वारा, फिर जांचें कि क्या सरणी की लंबाई =17 है, फिर आउटपुट कॉलम को मान असाइन करें, अन्यथा पंक्ति को अनदेखा करें।

विस्तृत समाधान

  1. फ्लैट फ़ाइल कनेक्शन प्रबंधक जोड़ें, टेक्स्ट फ़ाइल चुनें
  2. उन्नत टैब पर जाएं , एक कॉलम को छोड़कर सभी कॉलम हटाएं
  3. रेमियानिंग कॉलम के डेटाटाइप को DT_WSTR में बदलें और लंबाई =4000

  1. डेटाफ़्लो टास्क जोड़ें
  2. डेटा प्रवाह कार्य के अंदर एक फ्लैट फ़ाइल स्रोत, स्क्रिप्ट घटक और OLEDB गंतव्य जोड़ें

  1. स्क्रिप्ट घटक में Column0 Select चुनें इनपुट कॉलम के रूप में

  1. 17 आउटपुट कॉलम जोड़ें (इष्टतम आउटपुट कॉलम)
  2. OutputBufferबदलें SynchronousInput None . के लिए संपत्ति

  1. स्क्रिप्ट भाषा को Visual Basic के लिए चुनें

  1. स्क्रिप्ट एडिटर में निम्नलिखित स्क्रिप्ट लिखें

    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
    
        If Not Row.Column0_IsNull AndAlso
                Not String.IsNullOrEmpty(Row.Column0.Trim) Then
    
    
            Dim strColumns As String() = Row.Column0.Split(CChar(";"))
    
            If strColumns.Length <> 17 Then Exit Sub
    
    
            Output0Buffer.AddRow()
            Output0Buffer.Column = strColumns(0)
            Output0Buffer.Column1 = strColumns(1)
            Output0Buffer.Column2 = strColumns(2)
            Output0Buffer.Column3 = strColumns(3)
            Output0Buffer.Column4 = strColumns(4)
            Output0Buffer.Column5 = strColumns(5)
            Output0Buffer.Column6 = strColumns(6)
            Output0Buffer.Column7 = strColumns(7)
            Output0Buffer.Column8 = strColumns(8)
            Output0Buffer.Column9 = strColumns(9)
            Output0Buffer.Column10 = strColumns(10)
            Output0Buffer.Column11 = strColumns(11)
            Output0Buffer.Column12 = strColumns(12)
            Output0Buffer.Column13 = strColumns(13)
            Output0Buffer.Column14 = strColumns(14)
            Output0Buffer.Column15 = strColumns(15)
            Output0Buffer.Column16 = strColumns(16)
    
        End If
    
    End Sub
    
  2. आउटपुट कॉलम को डेस्टिनेशन कॉलम में मैप करें



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. शून्य या शून्य मानों को अनदेखा करते हुए AVG प्राप्त करें

  2. SQL सर्वर से कनेक्शन स्थापित करते समय एक नेटवर्क-संबंधी या आवृत्ति-विशिष्ट त्रुटि उत्पन्न हुई

  3. SQL सर्वर में UNIX_TIMESTAMP

  4. Microsoft Access डेटाबेस को SQL सर्वर में माइग्रेट करना

  5. sql सर्वर में वर्तमान डेटाटाइम से पिछले 7 दिनों तक पिछले 7 दिनों का डेटा कैसे प्राप्त करें?