2012-01-16 1 views
1

私の入力(CSVの文字列)でうまく動作するこのコードが見つかりました。パッケージは正常に動作しますが、5列の出力を得る代わりに、2列しか取得しません。スクリプトコンポーネントに列を追加し、データ型を適切なものに変更しました。入力は643492、PV STRIP 1X1 UTILITY UP、67.5,393446です。この文字列全体の中で、私は643492を1つの列に、PV STRIP 1X1 UTILITY UPを別の列で取得します。文字列の残りの部分は空白になりません。専門家が親切に助けます。私は.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

バッファー行には最初の2つの値しか割り当てられていないようです。コードスニペットの最後の2行は、割り当てが行われる場所です。 rowValues配列には、例で指定した文字列のSplit()に基づいて5つの値を含める必要があります。 GetValue(index)メソッドを使用してそれらを割り当てることができます。これは、配列のインデックス3〜5に対して行います。コードは、フィールドの名前であり、0は、アレイ内の値の0から始まるインデックスである

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

文字列値は、上記のように行きます。あなたが希望する出力タイプに変換するために、他のConvert方法を使用することができます

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

:整数の場合

は、あなたのような何かを行うことができます。 See MSDN for reference.

+0

私はこれを今発見しました。しかし、あなたの返事に感謝します。乾杯!! – rvphx

関連する問題