Общ преглед на решението
можете да направите това, като добавите един 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 изходни колони (оптималните изходни колони)
- Променете
OutputBuffer
SynchronousInput
свойство на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
-
Съпоставете изходните колони с целевите колони