SSIS-Actualizar tabla de base de datos desde un archivo de Excel.

13/06/2009 - 04:51 por kojikabutosv | Informe spam
Hola, buenas tardes, estoy aprendiendo a utilizar SSIS y estoy hecho
"bola" todo este día con un problema para actualizar una tabla desde un
archivo de Excel.

He creado el paquete de la siguiente manera:

1- El excel source
2- He creado un Data Conversion puesto que me daba error al quere enviar
los registros a la tabla
3- Luego he hecho un Lookup para buscar los registro (esto no sé si es
necesario)

Luego de esto no sé que tarea agregar en el data Flow para decirle que
me actualice (no que me inserte), los campos que tengo en el archivo de
excel y que coinciden en el archivo de excel, buscando en internet leía
que hacían referencia a la tarea "OLE DB Command", pero no encuentro
como darle la instrucción del UPDATE.

Algo así como : Update empleado set empleado.puesto=campoEnexcel.puesto
where empleado.empleado = campoEnexcel.empleado

gracias por su ayuda y su tiempo.

Preguntas similare

Leer las respuestas

#1 Maxi
13/06/2009 - 16:51 | Informe spam
Hola, le recomiendo que haga dos cosas

1) Primero el tutorial de SSIS que viene con SQL server cuando baja los
libros on line
2) Siendo novato incie el proyecto en modo wizard



Maxi Accotto
Microsoft MVP en SQL Server
Consultor en SQL Server
http://blog.maxiaccotto.com



"kojikabutosv" escribió en el mensaje de
noticias:#
Hola, buenas tardes, estoy aprendiendo a utilizar SSIS y estoy hecho
"bola" todo este día con un problema para actualizar una tabla desde un
archivo de Excel.

He creado el paquete de la siguiente manera:

1- El excel source
2- He creado un Data Conversion puesto que me daba error al quere enviar
los registros a la tabla
3- Luego he hecho un Lookup para buscar los registro (esto no sé si es
necesario)

Luego de esto no sé que tarea agregar en el data Flow para decirle que me
actualice (no que me inserte), los campos que tengo en el archivo de excel
y que coinciden en el archivo de excel, buscando en internet leía que
hacían referencia a la tarea "OLE DB Command", pero no encuentro como
darle la instrucción del UPDATE.

Algo así como : Update empleado set empleado.puesto=campoEnexcel.puesto
where empleado.empleado = campoEnexcel.empleado

gracias por su ayuda y su tiempo.
Respuesta Responder a este mensaje
#2 Alejandro Mesa
13/06/2009 - 23:47 | Informe spam
Como comento Maxi, si eres nuevo con el uso de SSIS, entonces te vendria bien
los tutoriales y algun buen libro sobre el tema.

Si eres ducho con T-SQL, una forma sencilla seria creando una tabla
permanente en la base de datos. Tu paquete tendria que eliminar todos los
registros de esta tabla (truncate table empleado_stage), copiar los registros
desde el archivo excel hacia esta tabla y luego una tarea sql que envie la
sentencia t-sql que actualiza tu tabla basada en las filas existentes en la
tabla que usas para almacenar la data desde excel. Algo asi como:

update empleado
set puesto = (
select s.puesto
from empleado_stage as s
where s.empleadoid = empleado.empleadoid
)
where exists (
select *
from empleado_stage as s
where s.empleadoid = empleado.empleadoid
);

Ahora, si no deseas crear la tabla para almacenar la data de el archivo
excel, entonces tendrias que poner esa data en un recordset y hacer un bucle
donde por cada fila envies una sentencia parametrizada hacia la base de
datos. Como vez es mas compleja esta opcion, pero muy practica cuando no
tenemos permiso en la db para crear una nueva tabla y ademas cuando el # de
filas a actualizar no son demasiadas.

Si el # de filas es poco, hasta la tarea "slowly changing dimension" te
puede servir. Lo malo es que debes estar familiarizado con estos conceptos
antes de navegar por el wizard.


AMB


"kojikabutosv" wrote:

Hola, buenas tardes, estoy aprendiendo a utilizar SSIS y estoy hecho
"bola" todo este día con un problema para actualizar una tabla desde un
archivo de Excel.

He creado el paquete de la siguiente manera:

1- El excel source
2- He creado un Data Conversion puesto que me daba error al quere enviar
los registros a la tabla
3- Luego he hecho un Lookup para buscar los registro (esto no sé si es
necesario)

Luego de esto no sé que tarea agregar en el data Flow para decirle que
me actualice (no que me inserte), los campos que tengo en el archivo de
excel y que coinciden en el archivo de excel, buscando en internet leía
que hacían referencia a la tarea "OLE DB Command", pero no encuentro
como darle la instrucción del UPDATE.

Algo así como : Update empleado set empleado.puesto=campoEnexcel.puesto
where empleado.empleado = campoEnexcel.empleado

gracias por su ayuda y su tiempo.

Respuesta Responder a este mensaje
#3 kojikabutosv
16/06/2009 - 17:38 | Informe spam
Gracias Alejandro y Maxi por su tiempo, soy muy nuevo en el tema de
SSIS, y al final lo que hice fué mas o menos lo que sugería Alejandro,
al final tuve que crear una tabla temporal para pasar todo desde Excel a
la nueva tabla temporal y luego hice la actualización con T-SQL.

Ambos tienen razón necesito leer más documentación respecto a esto.

Gracias nuevamente por su tiempo.

EXITOS!!!!

Alejandro Mesa escribió:
Como comento Maxi, si eres nuevo con el uso de SSIS, entonces te vendria bien
los tutoriales y algun buen libro sobre el tema.

Si eres ducho con T-SQL, una forma sencilla seria creando una tabla
permanente en la base de datos. Tu paquete tendria que eliminar todos los
registros de esta tabla (truncate table empleado_stage), copiar los registros
desde el archivo excel hacia esta tabla y luego una tarea sql que envie la
sentencia t-sql que actualiza tu tabla basada en las filas existentes en la
tabla que usas para almacenar la data desde excel. Algo asi como:

update empleado
set puesto = (
select s.puesto
from empleado_stage as s
where s.empleadoid = empleado.empleadoid
)
where exists (
select *
from empleado_stage as s
where s.empleadoid = empleado.empleadoid
);

Ahora, si no deseas crear la tabla para almacenar la data de el archivo
excel, entonces tendrias que poner esa data en un recordset y hacer un bucle
donde por cada fila envies una sentencia parametrizada hacia la base de
datos. Como vez es mas compleja esta opcion, pero muy practica cuando no
tenemos permiso en la db para crear una nueva tabla y ademas cuando el # de
filas a actualizar no son demasiadas.

Si el # de filas es poco, hasta la tarea "slowly changing dimension" te
puede servir. Lo malo es que debes estar familiarizado con estos conceptos
antes de navegar por el wizard.


AMB


"kojikabutosv" wrote:

Hola, buenas tardes, estoy aprendiendo a utilizar SSIS y estoy hecho
"bola" todo este día con un problema para actualizar una tabla desde un
archivo de Excel.

He creado el paquete de la siguiente manera:

1- El excel source
2- He creado un Data Conversion puesto que me daba error al quere enviar
los registros a la tabla
3- Luego he hecho un Lookup para buscar los registro (esto no sé si es
necesario)

Luego de esto no sé que tarea agregar en el data Flow para decirle que
me actualice (no que me inserte), los campos que tengo en el archivo de
excel y que coinciden en el archivo de excel, buscando en internet leía
que hacían referencia a la tarea "OLE DB Command", pero no encuentro
como darle la instrucción del UPDATE.

Algo así como : Update empleado set empleado.puesto=campoEnexcel.puesto
where empleado.empleado = campoEnexcel.empleado

gracias por su ayuda y su tiempo.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida