2012-01-16 108 views
1

我發現這段代碼適用於我的輸入(一串CSV)。包運行良好,但沒有獲得5列的輸出,我只得到2列。我在腳本組件中添加了額外的列,並將其數據類型更改爲合適的數據類型。輸入是643492,PV STRIP 1X1 UTILITY UP,67.5,393446。在整個字符串中,我只在一列中獲得643492,在另一列中獲得PV STRIP 1X1 UTILITY。其餘的字符串出現空白不知道爲什麼。專家善意幫助。我不知道.net,我也是SQL Server的新手。SSIS腳本組件

Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer) 
    Dim strRow As String 
    Dim strColSeperator As String 
    Dim rowValues As String() 
    strRow = Row.Line.ToString() 
    If strRow.Contains(",") Then 
     strColSeperator = (",") 
    ElseIf strRow.Contains(";") Then 
     strColSeperator = ";" 
    End If 

    rowValues = Row.Line.Split(CChar(strColSeperator)) 
    Row.Code = rowValues.GetValue(0).ToString() 
    Row.Description = rowValues.GetValue(1).ToString() 

End Sub 

回答

1

看來您只是將前兩個值分配給緩衝區行。代碼片段的最後兩行是正在進行分配的位置。您的rowValues數組應該包含5個基於您在示例中提供的字符串上的值Split()。您可以使用GetValue(index)方法分配它們。對數組的索引3至5執行此操作。

字符串值去像上面:

Row.FieldName = rowValues.GetValue(0).ToString() 

其中代碼是字段的名稱,0是陣列中的值的索引(從零開始)。

對於整數,你可以這樣做:

Row.FieldName = Convert.ToInt32(rowValues.GetValue(3)) 

您可以使用其他Convert方法,將你所需的輸出類型。 See MSDN for reference.

+0

我剛纔發現。但是,謝謝你的回覆。乾杯!! – rvphx 2012-01-16 22:16:44