Заранее спасибо за вашу помощь. Мне нужна помощь в написании компонента сценария SSIS для разделения одной строки на несколько строк. Было много полезных блогов и сообщений, которые я просмотрел ниже:
http://bi-polar23.blogspot.com/2008/06/splitting-delimited-column-in-ssis.html
Однако мне нужна дополнительная помощь по кодированию для завершить проект. В общем, вот что я хочу сделать.
Входные данные
ID Item Name 1 Apple01,02,Banana01,02,03 2 Spoon1,2,Fork1,2,3,4
Выходные данные
ParentID ChildID Item Name 1 1 Apple01 1 2 Apple02 1 3 Banana01 1 4 Banana02 1 5 Banana03 2 1 Spoon1 2 2 Spoon2 2 3 Fork1 2 4 Fork2 2 5 Fork3 2 6 Fork4
Ниже моя попытка закодировать, но не стесняйтесь переделывать целиком, если это нелогично. Установлен асинхронный выход SSIS.
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
Dim posID As Integer, childID As Integer
Dim delimiter As String = ","
Dim txtHolder As String, suffixHolder As String
Dim itemName As String = Row.ItemName
Dim keyField As Integer = Row.ID
If Not (String.IsNullOrEmpty(itemList)) Then
Dim inputListArray() As String = _
itemList.Split(New String() {delimiter}, _
StringSplitOptions.RemoveEmptyEntries)
For Each item As String In inputListArray
Output0Buffer.AddRow()
Output0Buffer.ParentID = keyField
If item.Length >= 3 Then
txtHolder = Trim(item)
Output0Buffer.ItemName = txtHolder
'when item length is less than 3, it's suffix
Else
suffixHolder = Trim(item)
txtHolder = Left(txtHolder.ToString(), Len(txtHolder) _
- Len(suffixHolder)) & suffixHolder.ToString()
Output0Buffer.ItemName = txtHolder
End If
Next
End If
End Sub
ID Item Name 1 Apple01 1 02 1 Banana01 1 02 1 03 2 Spoon1 2 2 2 Fork1 2 2 2 3 2 4