Дополнительные столбцы в середине существующего текстового файла с разделителем трубы (Как игнорировать значения этого столбца в исходном файле) SSIS - PullRequest
0 голосов
/ 18 марта 2020

Я использовал источник плоских файлов пакета служб SSIS для чтения разделителя канала | текстовый файл и используемый разделитель столбцов как | и текстовый классификатор как нет. Мне нужно справиться с этим, если дополнительные столбцы в исходном файле нужно пропустить значения этого столбца.

Если в исходном файле есть новые столбцы, данные загружаются в неправильные столбцы. Как пропустить значения этих строк?

1 Ответ

0 голосов
/ 19 марта 2020

РЕДАКТИРОВАТЬ: я пересмотрел ответ, чтобы удалить строки с количеством столбцов, превышающим ожидаемое:

Выполните синтаксический анализ SSIS с источником компонента сценария. В компоненте сценария:

-Выберите диспетчер соединений с плоскими файлами под диспетчерами соединений, ниже я оставил его с именем «Соединение»

-Добавьте столбцы в выходной буфер и настройте их типы данных. В моем примере они названы «Первый» и «Второй»

. В сценарии добавьте ссылку на System.IO и выполните что-то вроде следующего, которое ищет ожидаемое количество столбцов и добавляет только строка в буфер, если он соответствует этим критериям:

using System.IO;
...
public override void CreateNewOutputRows()
{
    var expectedNumOfColumns = 2;
    using (StreamReader sr = new StreamReader(Connections.Connection.ConnectionString))
    {
        string line;
        while((line = sr.ReadLine()) != null)
        {
            var parsedLine = line.Split(',');
            if (parsedLine.Length == expectedNumOfColumns)
            {
                Output0Buffer.AddRow();
                Output0Buffer.First = parsedLine[0];
                Output0Buffer.Second = parsedLine[1];
            }
        }
    }
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...