Как разобрать текстовый файл в SSIS - PullRequest
0 голосов
/ 31 октября 2018

Iam новичок в SSIS, Iam сталкивается с проблемой ниже при синтаксическом анализе текстового файла, который содержит приведенные ниже примеры данных

Ниже приведено требование

-> Необходимо захватить число после IH1 (454756567) и вставить в один столбец как Номер счета -> Необходимо вставить данные между ABCD1234 в ABCD2345 в другой столбец как TotalRecord.

Большое спасибо за помощь.

abcd1234

IH1 454756567 686575634

IP2 HJKY TXRT

IBG 23455GHK

ABCD2345

IH1 689343256 686575634

IP2 HJKY TXRT

IBG 23455GHK

ABCD5678

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Это компонент скрипта для обработки всего файла. Вам нужно создать свои выходные данные, и они в настоящее время обрабатываются как строки.

Предполагается, что формат файла соответствует. Если у вас нет 2 столбцов в IH1 и IP2 ВСЕ время. Я бы порекомендовал цикл for от 1 до len -1 для обработки. И отправлять записи на собственный выход.

public string recordID = String.Empty;
public override void CreateNewOutputRows()
{
    string filePath = ""; //put your filepath here
    using (System.IO.StreamReader sr = new System.IO.StreamReader(filePath))
    {
        while (!sr.EndOfStream)
        {
            string line = sr.ReadLine();
            if (line.Substring(0, 4) == "ABCD") //Anything that identifies the start of a new record
                                                // line.Split(' ').Length == 1 also meets your criteria.
            { 
                recordID = line;
                Output0Buffer.AddRow();
                Output0Buffer.RecordID = line;
            }

            string[] cols = line.Split(' ');

            switch (cols[0])
            {
                case "IH1":
                    Output0Buffer.InvoiceNumber = cols[1];
                    Output0Buffer.WhatEverTheSecondColumnIs = cols[2];
                    break;
                case "IP2":
                    Output0Buffer.ThisRow = cols[1];
                    Output0Buffer.ThisRow2 = cols[2];
                    break;
                case "IBG":
                    Output0Buffer.Whatever = cols[1];
                    break;
            }
        }
    }
}
0 голосов
/ 31 октября 2018

Это необходимо сделать в компоненте скрипта.

...