2009-05-02 12 views
2

SSISを使用してExcelシートからSQL Server 2005にデータをインポートしようとすると、データには以前の空でないセルの値これは次のようになります。SSISでExcelからデータをインポートすると空の値が返される

2005 | 15 | Something1 
    | 12 | Something2 
    | 14 | Something3 
2006 | 10 | Something4 
    | 2 | Something5 
    | 18 | Something6 
    | 15 | Something7 

2005年と2006年には記入する必要がありますが、すべてがnullです。 変数がnullでない場合は、このフィールドの値を変数に代入し、それを使用してその後のnull値を置き換えることはできますか?

答えて

3

データフローでスクリプトコンポーネントを使用し、最後の既知の値を保持する変数を使用して各行を調べる必要があります。

更新:コードは次のとおりです。私はVBのSSIS 2008でこれを行いましたので、いくつかの編集が必要な場合があります(たとえば、Dts.Variables ["User :: LastYear"]を使用する必要があるかもしれません)Variables.LastYearの代わりにValue.ToInt32 - 私の頭の上から覚えていない):

Dim LastYear As Integer 

Public Overrides Sub PreExecute() 
    MyBase.PreExecute() 
    LastYear = 0 
End Sub 

Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer) 
    If Row.year_IsNull Then 
     Row.year = LastYear 
    Else 
     LastYear = Row.year 
    End If 
End Sub 

うまくいけば、これは役に立ちます!

+0

ありがとう、これはうまくいくようです。 – BlueEyes

+0

偉大な解決策、私はまた、 "すべての行"の他の多くのクールなもののスクリプトコンポーネントを使用! – BlueEyes

+1

嬉しいですが、Script Componentであまり気にしないでください。覚えておいて、それは毎にの行ごとに繰り返されます。つまり、非常に非効率的です。あなたがセットで何かできるのであれば、それをセットで行います。これは、反復処理が必要なもの(現在の例のようなもの)にのみ使用してください。 – Eric

関連する問題