none
Obtener datos a un Tabla Temporal DTS RRS feed

  • Pregunta

  • Buenas Noches,

    Lo que estoy intentando hacer obtener datos de varias tablas de una Base de Datos(BD1), esto lo hice por medio de una consulta.

    Ahora quiero guardar ese select en una tabla temporal, para luego compararla con una tabla de Otra Base de Datos(BD2) y hacer Updates o Inserts.

    Los campos obtenidos del Select de la BD1 son los mismo de la tabla destino de BD2.

    Quisiera Saber como hacer esto con paquetes BIDs, espero que me puedan ayudar.

    Gracias.



    Jorge Luis Vilca Venegas

    viernes, 7 de septiembre de 2012 0:12

Respuestas

  • Hola,

    Yo te aconsejo que utilices una tabla fisica que borras cada vez que ejecutas proceso, recuerda que si tu ambiente donde se ejecuta tus ETL no poseen suficiente RAM, meter datos en memoria no seria la solucion, mas si estamos hablando de millones de registros.

    Si el objetivo es comparar datos y actualizar, te aconsejo que crees una dataflow task, donde tengas dos origenes, query que armas para actualizar y tabla a actualizar, por medio Union y Condional Split puedes encontrar la informacion a actualizar o insertar, el union (full join, left join, inner join lo puedes realizar en memoria), ya cuando tengas los datos unidos aplicas el Condional Split evaluando las condiciones necesarias para identificar los datos que quieres actualizar, con el condicional split generas sub set de datos en base a condiciones, estos los puedes actualizar o insertar, si es que lo requieres, si realizas un insert no hay problema usas un destination, si lo que necesitas es el update utiliza un oledb command.

    Muchas suerte amigo


    Ahias Portillo

    viernes, 7 de septiembre de 2012 2:30

Todas las respuestas

  • Hola,

    Yo te aconsejo que utilices una tabla fisica que borras cada vez que ejecutas proceso, recuerda que si tu ambiente donde se ejecuta tus ETL no poseen suficiente RAM, meter datos en memoria no seria la solucion, mas si estamos hablando de millones de registros.

    Si el objetivo es comparar datos y actualizar, te aconsejo que crees una dataflow task, donde tengas dos origenes, query que armas para actualizar y tabla a actualizar, por medio Union y Condional Split puedes encontrar la informacion a actualizar o insertar, el union (full join, left join, inner join lo puedes realizar en memoria), ya cuando tengas los datos unidos aplicas el Condional Split evaluando las condiciones necesarias para identificar los datos que quieres actualizar, con el condicional split generas sub set de datos en base a condiciones, estos los puedes actualizar o insertar, si es que lo requieres, si realizas un insert no hay problema usas un destination, si lo que necesitas es el update utiliza un oledb command.

    Muchas suerte amigo


    Ahias Portillo

    viernes, 7 de septiembre de 2012 2:30
  • HOla Ahias,

    Como me dijistes El insert funciona muy bien, el update tambien 

    el problema es que demora demasiado en actualizar.

    Mi pregunta es ¿que otra forma de actualizar hay que demore menos?.

    Gracias por el apoyo me sirvio bastante.


    Jorge Luis Vilca Venegas

    viernes, 7 de septiembre de 2012 4:41
  • Con el Actualizar sucede algo curioso, me actualiza los datos, pero lo malo es que nunca termina el flujo siempre se queda en 9637 filas

    y me sale esta advertencia 

    [SSIS.Pipeline] Advertencia: La columna de salida "Trns" (173) de la salida "Salida de origen de OLE DB" (167) y el componente "Origen de OLE DB 1" (157) no se utilizará posteriormente en la tarea Flujo de datos. Si se quita esta columna de salida que no se utiliza, se aumentará el rendimiento de la tarea Flujo de datos.

    La verdad no entiendo muy bien por que no termina el flujo si ya actualizo correctamente.

    Espero tu respuesta gracias.


    Jorge Luis Vilca Venegas

    viernes, 7 de septiembre de 2012 4:54