De programacion y otros demonios

lunes, 25 de enero de 2010

SSIS - Quitar caracteres extraños del flujo de datos

A veces cuando leemos de bases de datos o archivos, nos encontramos con caracteres que nos crean problemas en nuestros paquetes ssis, o que no deseamos que ingresen en nuestra base de datos.  Por ejemplo, los enter o tabulaciones en la descripción de un producto.  Veamos como eliminarlos del flujo de datos antes de insertarlos:

1.  En mi ejemplo yo leo la información de los productos de una base de datos postgresql, un query como este:
SELECT codigo, descripcion, presentacion
FROM    Productos

En mi caso la columna presentacion es la que tiene tabulaciones y enters (saldtos de linea).






2. Agrega un Script component, y en el tab de Input Columns selecciona las columnas que vas a usar (ya sea para modificar o leer) dentro del código Visual Basic.



En el tab Inputs and Outputs, voy a crear una columna de salida donde guardaré la modificación que le haré a la columna original, la llamaré presentacion_conv.  La he creadi de tipo DT_STR y tamaño 50.





Ingresa por el tab Script al botón Design Script y pega el siguiente código ( para vs 2008 ):

' Microsoft SQL Server Integration Services Script Component

' Write scripts using Microsoft Visual Basic 2008.
' ScriptMain is the entry point class of the script.


Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper
Imports System.Text.RegularExpressions


_
_
Public Class ScriptMain
Inherits UserComponent

Public Overrides Sub PreExecute()
MyBase.PreExecute()
End Sub


Public Overrides Sub PostExecute()
MyBase.PostExecute()


End Sub


Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
If Not Row.presentacion_IsNull Then
Row.presentacionconv = Replace(Replace(Row.presentacion.Trim, Chr(10), ""), Chr(13), "").ToString

End If
''
End Sub
End Class
 
Fíjate en la linea resaltada que estoy asignándole a la columna de salida el valor de la columna presentacion, quitándole los espacios en blanco (funcion TRIM) y reemplazando los caracteres de tabulacion y enter (chr 10 y 13).

Etiquetas:

1 comentarios:

  • no funca da error en

    If Not Row.presentacion_IsNull Then
    Row.presentacionconv = Replace(Replace(Row.presentacion.Trim, Chr(10), ""), Chr(13), "").ToString

    dice que presentacion_IsNull no es miembro del script component

    De Blogger Juan, A las 2 de mayo de 2011, 12:59  

Publicar un comentario



<< Inicio