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).
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).
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.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: ssis
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 Juan, A las 2 de mayo de 2011, 12:59
Publicar un comentario
<< Inicio