2016-08-15 61 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 
}