Recentemente mi è capitato di dover eliminare tutti i caratteri non numerici da una colonna all'interno di un data flow SSIS. Ovviamente ci sono molti modi possibili per farlo, ma l'utilizzo delle regular expression è risultato essere il modo più veloce...

Per utilizzare le RegEx all'interno di un data flow occorre scaricare il componente per la trasformazione dall'indirizzo http://www.microsoft.com/downloads/details.aspx?FamilyID=c16f11ad-150a-4091-b3a2-83d21d3e0973&displaylang=en
oppure utilizzare lo Script Component di SSIS. Vediamo un esempio di come usare quest'ultimo.

Per prima cosa trascinare lo Script Component all'interno del data flow e scegliere Transform per determinarne il comportamento, scegliere le colonne da passare allo script in ReadWrite.
Cliccare su Design Script ed aggiungere il codice seguente nell'area Imports:

Imports System.Text.RegularExpressions

quindi il codice seguente al posto della subroutine Input0_ProcessInputRow:

Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)

    If Row.CodiceProdotto_IsNull = False Or Row.CodiceProdotto = "" Then

        Dim pattern As String = String.Empty

        Dim r As Regex = Nothing

        pattern = "[^0-9]"

        r = New Regex(pattern, RegexOptions.Compiled)

        Row.CodiceProdotto = Regex.Replace(Row. CodiceProdotto , pattern, "")
    End If

End Sub

In questo modo, utilizzando poche righe di codice, si riesce a risolvere un problema abbastanza comune in maniera davvero semplice.

Alla prossima !


Comments are closed.

About me

  • Danilo Dominici
  • Send mail to the author(s) Email
  • Skype
  • View my profile on LinkedIn

Tags

Calendar

<February 2012>
SunMonTueWedThuFriSat
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

Archives

Blogroll

Subscribe to this weblog's RSS feed with SharpReader, Radio Userland, NewsGator or any other aggregator listening on port 5335 by clicking this button.

Statistics

Total Posts: 121
This Year: 1
This Month: 0
This Week: 0
Comments: 19