ConvertRowsTocolumns Использование SSIS

Я должен извлечь данные из плоских файлов и загрузить в промежуточную базу данных

Пример: у меня есть этот плоский файл без заголовка столбца, и я хотел бы получить каждую строку в отдельном столбце Данные текстового файла: Это фактический формат

01008012603181700250318
02010691700001988800000000000000000000000
51X11055907014X10000002200000000220000000003671100000000001124000000002110559070145
51X61630051007X10000000005000000000500000000016100000000009999000000002616300510071
60350000002205000000000002
02010691713001988900000000000000000000000
51X08042508025X10000001000000000100000000001670800000000000806000000002080425080250
51X08040547025X10000001000000000100000000001670800000000000806000000002080405470255
60350000002000000000000002
02011511724001989000000000000000000000000
112997241682493       01          
51X08066360013X10000002200000000170000000002830800000000000806000000002080663600135
53-00000050098234151  00
112997241682493       01          
51X08061643013X10000001500000000150000000002500800000000000806000000002080616430130
683000000000000000000000000
60350000003200000000000002
01008022603181734250318
160206917349000002B26031802
6724-000004400000000000002
320206917340201Y180326
3301000005321500000532150000000000000000000002

Условия: left (col,2) = 01 в один столбец и оставленный (col,02) в другой столбец... так что я должен прочитать несколько плоских файлов, как это. Имена столбцов похожи на column01,column02,column51. В этом случае 01 остается основным столбцом для любых нескольких строк. Мне нужно будет просмотреть как минимум 100 таких файлов.

Образец вывода

Col01                          col2                                                Col3
01008012603181700250318        02010691700001988800000000000000000000000       51X11055907014X10000002200000000220000000003671100000000001124000000002110559070145

Обновление 1: по предложению @Tab Alleman я загрузил весь текст в один столбец таблицы SQL. Я попытался разделить строки по string_split функция, не может быть в состоянии достичь результата. Разделитель - это пробел, но некоторые данные строки имеют несколько пробелов. Я также попытался создать функцию string_split, размещенную в стеке.

например: 01594022603181352250318 02027061352002288200000000000000000000000 112997232009865 01 51X06082082020X10000000600000000054000000000900600000000000601000000002060820820200 56-00000006012 00 112997232009865 01

2 ответа

Решение

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

У меня есть сценарий, который поможет вам. Хотя есть несколько шагов

  1. Загрузите ваши данные в колонку с именами данных.

  2. Добавить скрипт Преобразование компонентов

  3. На вкладке ввода - выберите данные только для чтения
  4. При вводе / выводе добавьте ожидаемый вывод Col1, Col2, ... и я установил для них все значение varchar(500)
  5. Добавьте следующий скрипт (C#)

int rn = 0;

строка Col1;

строка Col2;

строка Col3;

строка Col4;

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
    rn++;
    Col1 = Row.data;
    while (Row.NextRow())
    {
        rn++;
        switch (rn)
        {
            case 2:
                Col2 = Row.data;
                break;
            case 3:
                Col3 = Row.data;
                break;
            case 4:
                Col4 = Row.data;
                //Add transposed data on last row
                FlippedBuffer.AddRow();
                FlippedBuffer.Col01 = Col1;
                FlippedBuffer.Col2 = Col2;
                FlippedBuffer.Col3 = Col3;
                FlippedBuffer.Col4 = Col4;
                break;
        }
    }

}

Обратите внимание на следующее:

  1. переменные объявляются вне скрипта ProcessInputRow
  2. Новая строка создается, когда читается последняя строка.
  3. Я не мог заставить переменные отображаться как код при форматировании.
  4. Вам нужно добавить все ваши столбцы в Output, объявление переменной и переключатель.
Другие вопросы по тегам