Resumen de la solución
puede hacerlo agregando un Flat File Connection Manager agregue solo una columna con el tipo de datos DT_WSTR y una longitud de 4000 (asumiendo que su nombre es Column0 ) - Entonces todas las columnas se consideran como una gran columna
- En la
Dataflow taskagregue unScript Componentdespués deFlat File Source - En marca
Column0como columna de entrada y agregar 17 columnas de salida - En
Input0_ProcessInputRowdivisión del métodoColumn0por delimitador, luego verifique si la longitud de la matriz es =17 y luego asigne valores a las columnas de salida, de lo contrario, ignore la fila.
Solución detallada
- Agregue un administrador de conexión de archivos planos, seleccione el archivo de texto
- Ir a la pestaña Avanzado , Eliminar todas las columnas excepto una columna
- Cambie el tipo de datos de la columna restante a
DT_WSTRy longitud =4000

- Agregar una tarea de flujo de datos
- Dentro de la tarea de flujo de datos, agregue un origen de archivo plano, un componente de secuencia de comandos y un destino OLEDB

- En el componente de secuencia de comandos, seleccione
Column0como columna de entrada

- Agregue 17 columnas de salida (las columnas de salida óptimas)
- Cambiar el
OutputBufferSynchronousInputpropiedad aNone

- Seleccione el lenguaje de script para
Visual Basic

-
En el Editor de secuencias de comandos, escriba la siguiente secuencia de comandos
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 -
Asigne las columnas de salida a las columnas de destino