Estoy tratando de actualizar un campo en una tabla con datos de otra tabla, basado en una clave común. Si estuviera en SQL recta, sería algo así como:Actualizar tabla usando SSIS
Update EHSIT
set e.IDMSObjID = s.IDMSObjID
from EHSIT e, EHSIDMS s
where e.SITENUM = s.SITE_CODE
Sin embargo, las dos tablas no están en la misma base de datos, por lo que estoy tratando de usar SSIS para realizar la actualización. Ah, y el sitenum/site_code son varchar en uno y nvarchar en el otro, así que tendré que hacer una conversión de datos para que coincidan.
¿Cómo lo hago?
Tengo un objeto de flujo de datos, con la fuente como EHSIDMS y el destino como EHSIT. Tengo una conversión de datos para convertir el Unicode a no Unicode. ¿Pero cómo actualizo basado en el partido? Lo he intentado con el destino, utilizando un comando SQL como modo de acceso a datos, pero no parece tener la tabla fuente. Si solo asigno el campo para actualizar, ¿cómo lo limita en función de los campos coincidentes?
Estoy a punto de exportar mi tabla fuente a Excel o algo así, y luego intentar ingresar desde allí, aunque parece que todo lo que obtendría sería eliminar el paso de conversión de datos.
¿No debería haber una tarea de actualización de datos o algo así? ¿Es una de esas tareas de transformación de flujo de datos, y simplemente no estoy descifrando cuál es?
Ok, eso funciona. Creé una tabla temporal en mi db de destino, copié datos en ella y luego usé la declaración de actualización para llenar mi campo. Borre la tabla temporal, y listo. Gracias. – thursdaysgeek
Intente siempre utilizar una tabla de etapas, intente pensar en bloques de datos. Si tiene 1 millón de registros que necesitan ser actualizados, es muy lento actualizar cada registro con una declaración de actualización. Por lo tanto, debe usar 1 sola tabla y declaración para hacer sus actualizaciones. – JSC