Panoramica della soluzione
puoi farlo aggiungendo un Flat File Connection Manager aggiungi solo una colonna con Tipo di dati DT_WSTR e una lunghezza di 4000 (supponendo che il suo nome sia Column0 ) - Quindi tutte le colonne sono considerate come una grande colonna
- Nel
Dataflow taskaggiungi unScript Componentdopo ilFlat File Source - Nel segno
Column0come colonna di input e aggiungi 17 colonne di output - Nel
Input0_ProcessInputRowdividere il metodoColumn0per delimitatore, quindi controlla se la lunghezza dell'array è =17, quindi assegna valori alle colonne di output, altrimenti ignora la riga.
Soluzione dettagliata
- Aggiungi un gestore di connessione file flat, seleziona il file di testo
- Vai alla scheda Avanzate , Elimina tutte le colonne tranne una colonna
- Cambia il tipo di dati della colonna rimanente in
DT_WSTRe lunghezza =4000

- Aggiungi un'attività DataFlow
- All'interno dell'attività Flusso di dati aggiungi un'origine file flat, un componente script e una destinazione OLEDB

- Nel componente Script, seleziona
Column0come colonna di input

- Aggiungi 17 colonne di output (le colonne di output ottimali)
- Cambia il
OutputBufferSynchronousInputproprietà suNone

- Seleziona il linguaggio di script su
Visual Basic

-
Nello Script Editor scrivi il seguente Script
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 -
Mappa le colonne di output alle colonne di destinazione