2016-08-15 2 views
0

У меня есть проект проекта BIDS для загрузки данных из нескольких плоских файлов в базу данных SQL Server 2008. Данные предоставлены другой организацией.Looping Through Columns в компоненте скрипта SSIS

Многие данные имеют задние или ведущие пробелы. Этого достаточно, потому что это потребует от меня изменения размера столбцов в моей таблице для размещения. Я мог бы использовать производный столбец для решения этой проблемы, но есть достаточно столбцов, что было бы нецелесообразно устанавливать все это вручную.

Я пытаюсь использовать компонент скрипта (преобразование), чтобы удалить передние и конечные пробелы из каждого поля перед загрузкой. Тем не менее, это мой первый удар по использованию компонента сценария, и мне не повезло.

Попытка простой цикл Еогеасп:.

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

дает мне ошибку «Еогеасп оператор не может работать с переменными типа„Input0Buffer“, потому что„Input0Buffer“не содержит публичное определение„GetEnumerator“Что мне нужно сделать, чтобы решить эту проблему?

ответ

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 
} 
Смежные вопросы