2009-05-05 18 views
5

Utilizando SQL Server 2005 y Visual Studio 2005, intento crear un paquete SSIS para combinar datos de 1 tabla a varias otras tablasUtilizando SSIS para mapear valores codificados como parte de una migración de tabla uno a muchos en Visual Studio

La tabla fuente no tiene varios campos que las tablas de destino. Por ejemplo, los campos 'CreatedBy' y 'CreatedDate'. Me gustaría que estos estén codificados (en cierto sentido) como parte del proceso de importación del paquete.

El problema es no saber qué usar para facilitar esta asignación. Como punto de partida, sería aceptable tener un '1' codificado y GetDate() para createdBy y createdDate, respectivamente.

La pestaña "Propiedades de entrada y salida" o "Asignaciones de columna" en el cuadro de diálogo "Opciones avanzadas del editor de destino" no tiene ningún soporte aparente para correlacionar valores "predeterminados" como GetDate().

¿Alguna sugerencia de cómo lograr esto?

+0

Escribo SQL para obtener los datos de las tablas fuente. En mi SQL fuente, especifico todas las columnas faltantes para que coincidan. No puedo decir que sea la forma más eficiente de llevar a cabo la tarea, pero parece funcionar para mí. – JJO

Respuesta

8

La manera SSIS para crear nuevas columnas (con valores estáticos o no) es usar la transformación "Columna derivada" en su flujo de datos, entre el origen y el destino.

Esto le permite especificar columnas adicionales y sus valores utilizando una expresión. Para la fecha/hora actual, use Getdate() como expresión y establezca el tipo de datos como "date (DT_DATE)". Para codificar un valor, citarlo dos veces en la expresión (por ejemplo, "1") y especificar el tipo de datos relevante.

+1

Genial, gracias trabajado un encanto. –

+2

Nota: Las columnas no derivadas pasarán directamente a través del bloque de transformación "Columna derivada", es decir, desde su origen hasta su destino. (SSIS dentro de SQL Server 2008). – ryan

3

En lugar de utilizar una tabla como fuente, ¿qué le parece si especifica la consulta específicamente? De esta forma, puede definir valores de manera estática como parte de la fuente.

p. Ej.

SELECT id, fieldOne, fieldTwo, '1' AS createdBy, GetDate() AS createdDate 
FROM SourceTable 

He hecho esto exactamente recientemente.

Una cosa importante que debe recordar es que debe asegurarse de que sus datos coincidan. Tuve algunos problemas con los tipos de datos de cadenas que no coinciden (UTF-8 y similares).

+0

+1 para una buena sugerencia, pero esto solo funciona si está definiendo una consulta como fuente y la fuente es una fuente 'SQL'. No puede hacer esto si ha definido 'Tabla o Vista' como el 'Modo de acceso a datos' en una Fuente OLE DB, por ejemplo, aunque, por supuesto, podría usar su técnica si la fuente es una Vista que puede modificar . No puede hacer esto para un archivo fuente como FlatFile. – rohancragg

Cuestiones relacionadas