2016-08-15 82 views
0

我有一個BIDS項目設置,用於將數據從幾個平面文件上載到SQL Server 2008數據庫。數據由另一個組織提供。循環遍歷SSIS腳本組件中的列

很多數據都有拖尾或前導空格。這足以產生一個問題,它需要我更改表格中列的大小以適應。我可以使用派生列來解決這個問題,但是有足夠多的列來手動設置這些是不切實際的。

我想在上傳之前使用腳本組件(轉換)從每個字段中刪除前導和尾隨空格。但是,這是我第一次使用腳本組件,而且我沒有運氣。

嘗試一個簡單的foreach循環:

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

給我一個錯誤,「foreach語句無法在類型‘Input0Buffer’的變量操作,因爲‘Input0Buffer’不包含‘的GetEnumerator’的公共定義是什麼我需要做些什麼來解決這個問題?

回答

3

在腳本組件不是一個System.Data.DataRow而是它是一個Input0BufferInput0Buffer直接從您的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 
}