Archive for 20 octubre 2009

Separar nombre y apellidos en campos distintos

20/10/2009

En Junio un lector accidental de los que pasan por aquí, Alonso Urmendi ,me pidio ayuda en un comentario para separar el nombre y los apellidos de una persona que le venían en un solo campo, en dos campos distintos, uno para el nombre y otro para los apellidos.

Siento no haberte ayudado en su momento Alonso, pero como habrás comprobado, no paso mucho por aquí, por lo que hasta hoy que he puesto una entrada nueva no lo había visto.

Me imagino que a estas alturas Alonso lo tendrá solucionado (si algún día pasas por aquí pon como lo resolviste  en los comentarios ;D), pero de todas formas dejo una manera de hacerlo por si puede ayudar a otros, aquí va:

 

declare @nombreApellido as varchar(40)
declare @nombre as varchar(40)
declare @apellido as varchar(40)
set @nombreApellido='PEDRO GOMEZ PEREZ'
select @nombreApellido as [Nombre Completo]
set @nombre =(select substring(@nombreApellido,0,( PATINDEX('% %',@nombreApellido))))
set @apellido =(select substring(@nombreApellido,( PATINDEX('% %',@nombreApellido) + 1),len(@nombreApellido)))
select @nombre as Nombre
select @apellido as Apellidos
Anuncios

Borrar contenido de fichero excel desde dtsx SSIS

20/10/2009

Tal y como me pasó con los dts de SQL2000, nunca he tenido tiempo de encontrar una manera de borrar el contenido de un fichero excel desde un paquete dts de SQL2005. Esto provoca que la exportación de datos periódica y no incremental a dichos ficheros  sea un lío, puesto que si ejecutas el dts varias veces, provocas que se vayan añadiendo los datos, pero si entre ejecuciones borras el fichero también falla porque no existe.  Al final, siempre resolvía el asunto exportando los datos en un fichero plano con formato csv, ya que el usuario lo abriría como si fuera un xls, picando dos veces encima :D.

Pues bien, hoy me he puesto cabezón y me he empeñado en buscar una solución y he dado con una que me ha funcionado. 

De manera esquemática los pasos a añadir al flujo de control serían estos:

  • Crear un administrador de conexión con el fichero excel de marras
  • Crear una Tarea de secuencia de comandos en la que se incluya la instrucción: System.IO.File.Delete(“path del fichero excel”)
  • Añadir una Tarea ejecutar SQL, que haga el create de la tabla en el excel, este create se puede copiar del que genera en el flujo de datos que tiene como destino el fichero excel.
  • Crear un flujo de datos que tenga el origen que nos haga falta y como destino el fichero excel.

Para dejarlo más fino, lo suyo es meter, como mínimo, la ruta del fichero excel en un fichero de configuración o una variable … pero eso es otra historia.