2016-08-15 8 views
0

複数のフラットファイルからSQL Server 2008データベースにデータをアップロードするようにBIDSプロジェクトをセットアップしました。データは別の組織によって提供されます。SSISスクリプトコンポーネントの列をループする

多くのデータには、末尾または先頭のスペースがあります。これは、テーブルの列のサイズを変更する必要があるという問題で十分です。これを解決するために派生カラムを使用することもできますが、これをすべて手動で設定することは実用的ではないほどのカラムがあります。

私はスクリプトコンポーネント(変換)を使用して、アップロードする前にすべてのフィールドの先頭と末尾のスペースを削除しようとしています。しかし、これはスクリプトコンポーネントを使用する際の私の最初の刺し傷であり、私は運がない。

簡単なforeachループしよう:。

foreach(DataColumn i in Row) 
    { 
     /* do something */ 
    } 

は私にエラーを与え、「『Input0Bufferは』 『GetEnumeratorメソッド』の公開定義が含まれていないので、foreach文は 『Input0Buffer』タイプの変数を操作することはできませんがどのような私は、スクリプトコンポーネントで

答えて

3

System.Data.DataRowではなく、それはInput0Bufferある。Input0BufferがあなたのSSISパッケージから直接誘導し、プロパティなどのカラム名を持っているのですか?これを解決するために何をする必要があります。

GetType()。GetProperties()を使用すると、オブジェクトにあるすべてのSystem.Reflection.PropertyInfoを取得し、必要な処理を実行できます。私は頭の上の答えを知らないので、実際にプロパティを動的に呼び出すためにシステムリフレクションを使用する方法についていくつかの研究を行う必要があります。

using System.Linq; 

var properties = Row.GetType().GetProperties().Where(p => !p.Name.EndsWith("_IsNull")).Select(p => p.Name).ToArray(); 
foreach (var p in properties) 
{ 
    //Do Something 
} 
関連する問題