Общ преглед на решението
можете да направите това, като добавите един Flat File Connection Manager добавете само една колона с тип данни DT_WSTR и дължина от 4000 (ако приемем, че името му е Column0 ) – Така че всички колони се считат за една голяма колона
- В
Dataflow taskдобаветеScript ComponentследFlat File Source - В знак
Column0като входна колона и добавете 17 изходни колони - В
Input0_ProcessInputRowметод разделянеColumn0чрез разделител, След това проверете дали дължината на масива е =17, след което задайте стойности на изходните колони, В противен случай игнорирайте реда.
Подробно решение
- Добавете мениджър на връзки с плосък файл, изберете текстовия файл
- Отидете в раздела Разширени , Изтрийте всички колони с изключение на една колона
- Променете типа данни на останалата колона на
DT_WSTRи дължина =4000

- Добавяне на задача за поток от данни
- Вътре в задачата за поток от данни добавете източник на плосък файл, компонент на скрипт и местоназначение на OLEDB

- В компонента на скрипта изберете
Column0като входна колона

- Добавете 17 изходни колони (оптималните изходни колони)
- Променете
OutputBufferSynchronousInputсвойство наNone

- Изберете езика на скрипта за
Visual Basic

-
В редактора на скриптове напишете следния скрипт
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer) If Not Row.Column0_IsNull AndAlso Not String.IsNullOrEmpty(Row.Column0.Trim) Then Dim strColumns As String() = Row.Column0.Split(CChar(";")) If strColumns.Length <> 17 Then Exit Sub Output0Buffer.AddRow() Output0Buffer.Column = strColumns(0) Output0Buffer.Column1 = strColumns(1) Output0Buffer.Column2 = strColumns(2) Output0Buffer.Column3 = strColumns(3) Output0Buffer.Column4 = strColumns(4) Output0Buffer.Column5 = strColumns(5) Output0Buffer.Column6 = strColumns(6) Output0Buffer.Column7 = strColumns(7) Output0Buffer.Column8 = strColumns(8) Output0Buffer.Column9 = strColumns(9) Output0Buffer.Column10 = strColumns(10) Output0Buffer.Column11 = strColumns(11) Output0Buffer.Column12 = strColumns(12) Output0Buffer.Column13 = strColumns(13) Output0Buffer.Column14 = strColumns(14) Output0Buffer.Column15 = strColumns(15) Output0Buffer.Column16 = strColumns(16) End If End Sub -
Съпоставете изходните колони с целевите колони