Прежде всего, я довольно новичок в SSIS и C#, поэтому извиняюсь за любые ошибки ладьи ie. Я пытаюсь запутаться, разбивая один столбец указателем c из входного файла, который будет иметь заголовок переменной длины и нижний колонтитул.
Например, Input0Buffer имеет один столбец. Фактическим данным всегда предшествует строка, начинающаяся с фразы «STARTDATA», и заключенная в скобки строкой, начинающейся с «ENDDATA».
Один входной столбец содержит 5 бит данных, разделенных | , Два из этих столбцов меня не волнуют.
В основном входной файл выглядит следующим образом:
junkrow
headerstuff
morejunk
STARTDATA
ID1 | мусор | вещи | яблоко | сыр
ID2 | барсук | барахло | груша | йогурт
До сих пор я пытался получить несколько строк -row logi c в преобразователе C#, который, я думаю, меня устраивает - но я не могу понять, как заставить его выводить мои разделенные данные. Код ниже.
bool passedSOD;
bool passedEOD;
public void ProcessRow(Input0Buffer data)
{
string Col1, Col2, Col3;
if (data.Column0.StartsWith("ENDDATA"))
{
passedEOD = true;
}
if (passedSOD && !passedEOD)
{
var SplitData = data.Column0.Split('|');
Col1 = SplitData[0];
Col2 = SplitData[3];
Col3 = SplitData[4];
//error about Output0Buffer not existing in context
Output0Buffer.Addrow();
Output0Buffer.prodid = Col1;
Output0Buffer.fruit = Col2;
Output0Buffer.dairy = Col3;
}
if (data.Column0.StartsWith("STARTDATA"))
{
passedSOD = true;
}
}
Если я изменяю вывод на асинхронный, он останавливает ошибку о том, что Output0Buffer не существует в текущем контексте, и запускается, но выдает мне выходные данные в 0 строк - предположительно, потому что мне это нужно для быть синхронным, чтобы работать через каждую строку, как я настроил это?
Любая помощь очень ценится.