2012-06-08 26 views
6

Quiero escribir un paquete SSIS para copiar datos de Oracle al servidor MS Sql. y también la condición es: ¿Cuáles son los datos que se deben mover de Oracle a SQL se conocerán seleccionando una tabla en SQL. Básicamente, Table1.Column1 en SQL Server debe llenarse desde Oracle si el valor no está en esa tabla en SQL Server. también tenemos un valor de columna común en esa tabla para mapear el registro con SQL Server y Oracle. así que para hacer esto he planeado hacerlo en el paquete SSIS.Crear un paquete SSIS - Para copiar datos de Oracle a SQL Server

¿Puede alguien explicarme en detalle cómo crear un paquete de SSIS para el escenario mencionado anteriormente?

Gracias de antemano por su ayuda.

+0

¿Qué versión de ssis está utilizando? – praveen

Respuesta

10

Debe usar Búsqueda para unir la columna común (mismo tipo de datos) del servidor SQL y Oracle y recuperar los valores de Oracle que no tienen un registro coincidente en el servidor SQL.

Diseño Design

1.Using SSIS 2005

  1. Arrastre un OleDB Fuente y el punto a su base de datos de Oracle y seleccione la tabla.
  2. Arrastre una búsqueda y seleccione la conexión de SQL Server y señale su tabla.
  3. En la pestaña de columnas, une la columna común y selecciona las columnas en el lado derecho que necesitas recuperar. Lookup
  4. Haga clic en Configurar error de salida y seleccione la fila de redireccionamiento para la columna de unión. Lookup
  5. Arrastre un comando Oledb y conéctelo al resultado de error de la búsqueda. 6.Write una instrucción de inserción en el Comando Oledb Oledb Oledb

2. Si está utilizando SSIS 2008 entonces no hay necesidad de configurar la salida de error en las operaciones de búsqueda .just arrastrar el partido no hay salida de la búsqueda de SQL Server destino.

+0

no necesita un OleDbcommnad, puede usar un oledbdestination. Creo que es más fácil y más rápido – Diego

+0

Sí, tienes razón. Eso se puede hacer sin OledbCommand – praveen

+0

hola Praveen, muchas gracias funcionó como esperaba y realmente me ayudó. Un problema al que me enfrento es cuando mapeo una Columna del servidor sql y el oráculo en la búsqueda. uno de la columna es de tipo de datos diferente, por lo que no se incluye una columna llamada 'ID', pero tenemos ID como int en el servidor SQL y la columna de asignación para 'ID' en Oracle está en varchar. Entonces, ¿cómo puedo mapearlo? –

3

Sugiero this implementación.

He utilizado la solución de praveen, pero a veces puede no ser la mejor. Especialmente como el número si los registros en el destino crecen. Además, no se trata de "actualizaciones"

+0

Hola, Gracias por sus respuestas. Quiero saber si lo siguiente es posible y, de ser así, explique en detalle. Gracias. En SQL tenemos Table1 que tiene muchos detalles de conexión del servidor Oracle. lo que tenemos que hacer es, tenemos que copiar los datos de Oracle.Table5 a SQl.Table5. la condición está en SQL.Table5 conozco el nombre de la fábrica y, utilizando el nombre de la fábrica, puedo obtener los detalles del servidor Oracle en SQL.Table1. así que al usar estos detalles necesito conectarme a Oracle y obtener los datos coincidentes y luego actualizar en Sql.Table5. ¿Es esto posible en el paquete SSIS? –

+0

@Diego pasé por el blog de Andy. Es la mejor implementación de la carga de datos en el servidor sql. Su transformación Split adicional hace la diferencia con la solución que he publicado. Pude haber utilizado una tabla de etapas para completar los datos actualizados usando el destino Oledb y luego en el flujo de control utilicé una tarea ejecutar sql para cargarla en la tabla de destino. De esta forma puedo lograr un mejor rendimiento evitando la actualización fila a fila (que se hace en el blog de Andy usando el comando Oledb) y realizar una operación por lotes usando Execute Tarea SQL – praveen

Cuestiones relacionadas