none
Agregar lógica de negocio entre archivo plano y tabla

    Pregunta

  • Hola Comunidad, soy nuevo en SISS les escribo esperando la posibilidad que me puedan dar una ayudita para avanzar en el ejercicio que estoy realizando.

    Tengo como origen un archivo plano que tiene una sola columna con IDs y como salida una Tabla que contiene todo el detalle de este IDs, en la tabla de destino tengo una columna boleana vacía la cual debo realizarle un Update en base si existe este ID en el archivo plano. 

    Quería saber con cual control usar entre el origen y la destino, para definir esta lógica y poder realizar una T-SQL tomando parámetros tanto del archivo plano como de la Tabla.

    Desde ya agradezco de antemano.
    lunes, 16 de octubre de 2017 12:39

Respuestas

  • la lógica es..

    En el dataflow donde lees la tabla plana pon después un lookup, ese lookup tendrá conexión a tu base de datos y traerá el id de esa tabla. 

    Lookup en su forma de salir tiene varias configuraciones, una de ellas es distinguir ente filas coincidentes (filas que encuentra en la tabla) y filas no coincidentes (filas que no están en la tabla y por tanto son nueva). En resumen ese lookup tendrá dos salidas

    En la salida de No coincidentes, haz inserción en tu tabla contra un componente oledbdestination, es posible que tengas que añadir valores por defecto, de ser así, usa antes un componente derived column para crear las columnas que necesites.

    En la salida de coincidentes (updates) puedes poner un componente  OleDBcommand que haga el update, si mal no recuerdo es poner algo así update tabla set campo=valor where clave=? y luego en una de las pestañas añades que el parámetro es la columna que tu quieres, eso sustituirá esa ? por el valor de cada fila.

    Como consejo general, estudia SSIS, es una gran herramienta pero hay que usarla adecuadamente e implica una forma de pensar distinta a TSQL 

    Espero que te ayude. 


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    martes, 17 de octubre de 2017 5:51
    Moderador

Todas las respuestas

  • la lógica es..

    En el dataflow donde lees la tabla plana pon después un lookup, ese lookup tendrá conexión a tu base de datos y traerá el id de esa tabla. 

    Lookup en su forma de salir tiene varias configuraciones, una de ellas es distinguir ente filas coincidentes (filas que encuentra en la tabla) y filas no coincidentes (filas que no están en la tabla y por tanto son nueva). En resumen ese lookup tendrá dos salidas

    En la salida de No coincidentes, haz inserción en tu tabla contra un componente oledbdestination, es posible que tengas que añadir valores por defecto, de ser así, usa antes un componente derived column para crear las columnas que necesites.

    En la salida de coincidentes (updates) puedes poner un componente  OleDBcommand que haga el update, si mal no recuerdo es poner algo así update tabla set campo=valor where clave=? y luego en una de las pestañas añades que el parámetro es la columna que tu quieres, eso sustituirá esa ? por el valor de cada fila.

    Como consejo general, estudia SSIS, es una gran herramienta pero hay que usarla adecuadamente e implica una forma de pensar distinta a TSQL 

    Espero que te ayude. 


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    martes, 17 de octubre de 2017 5:51
    Moderador
  • Si, creo que anda por ahí lo que quiero hacer. Gracias por la respuesta y tomaré tu consejo se ve una gran herramienta trataré de buscar cursos :)
    martes, 17 de octubre de 2017 13:09