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 task
agregue unScript Component
después deFlat File Source
- En marca
Column0
como columna de entrada y agregar 17 columnas de salida - En
Input0_ProcessInputRow
división del métodoColumn0
por 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_WSTR
y 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
Column0
como columna de entrada
- Agregue 17 columnas de salida (las columnas de salida óptimas)
- Cambiar el
OutputBuffer
SynchronousInput
propiedad 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