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 !


About me

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

Tags

Calendar

<August 2008>
SunMonTueWedThuFriSat
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

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