Cómo cargar la fecha de un archivo en la tabla de SQL Server y también se encargan otros personajes en SSIS

Pregunta hecha: hace 8 meses Ultima actividad: hace 7 meses
up 0 down

Soy nuevo a SSIS y yo estoy tratando de importar un archivo CSV en una tabla de SQL Server con SSIS. El archivo CSV tiene una columna para la fecha y que ha establecido el tipo de datos como DT_DATE. El formato de la fecha MM/dd/yyyy. Sin embargo, durante meses y las fechas de menos de 10, que no tiene los ceros a la izquierda, es decir, March 7, 2012 está en el archivo 3/7/2012. Las filas que no tienen los valores de fecha tiene un carácter -. Alguien me puede ayudar, cómo cargar estos datos en el servidor SQL. Asumo la fecha de 3/7/2012 será cargado en la mesa sin problemas. Sin embargo, quiero manejar los guiones y cargarlos como NULL en el servidor SQL. ¿Puedo usar una columna derivada? Si el valor es -, configurarlo para NULL, Otra pueblan el valor de fecha tal como es. ¿Es esto correcto?

He probado el código de abajo y yo estoy recibiendo algún mensaje de error.

ISNULL([Last Contacted Date]) || (DT_WSTR,1)[Last Contacted Date] == "-" || (DT_WSTR,0)[Last Contacted Date] == "" ? NULL(DT_DATE) : [Last Contacted Date]

Para la columna Fecha del último contacto en Derivado, que había establecido las propiedades de error y de truncamiento para "No haga caso de fallo" y se ejecutó el trabajo bien.

Sin embargo, cuando ejecuto el trabajo SSIS, los datos se está cargado en la tabla del servidor SQL, pero la última fecha en contacto en todos los registros de la tabla del servidor SQL es NULL. El archivo tiene varias filas donde el valor es una fecha válida.

Alguien puede ayudar?

1 respuesta

up 0 down

En el Administrador de conexión de archivos planos, ajuste el tipo de columna a DT_WSTR con una longitud apropiada, a continuación, utilizar una Columna derivada con la siguiente expresión:

REPLACENULL([Last Contacted Date],"") == "" ? NULL(DT_DATE) :
(DT_DATE)(RIGHT("0" +  [Last Contacted Date], FINDSTRING( [Last Contacted Date], "/", 1 ) - 1) 
+ "/" + 
RIGHT("0" + SUBSTRING([Last Contacted Date], FINDSTRING( [Last Contacted Date], "/", 1 ) +1, FINDSTRING( [Last Contacted Date], "/", 2 ) - FINDSTRING( [Last Contacted Date], "/", 1 ) - 1), 2)
+ "/" + 
RIGHT([Last Contacted Date],4))