2011-01-06 15 views
13

He exportado registros a un archivo plano delimitado por "|" y parece que cuando importo esos registros en una nueva base de datos, SQL Server trata los valores NULL como campos vacíos. Las consultas de IMy funcionaron correctamente cuando los registros/campos eran NULL y, por lo tanto, quiero encontrar una forma de conservar los valores NULL en los datos o convertir los campos en blanco a valores NULL. Supongo que lo primero sería más fácil, pero no sé cómo hacerlo. Cualquier ayuda sería apreciada.Cómo retengo los valores NULL cuando uso SSIS para importar desde un archivo plano en SQL Server 2005

Respuesta

16

En su conexión de destino en el flujo de datos, hay una propiedad que puede bloquear que dice Mantener nulos, JUst verifique eso. Por qué ese no es el valor predeterminado que nunca sabré.

Hmmm pasa algo raro allí. Puedo sugerirle que limpie los datos y lo cambie a nulo, puede hacer esto como parte del flujo de datos o hacer dos flujos de datos, uno que inserte los datos en una tabla de etapas, luego ejecutar una tarea SQl exectue para hacer la limpieza y luego crear un flujo de datos para ejecutar desde la tabla de etapas hasta la tabla real.

+4

+1, se acabó "por qué ese no es el predeterminado voy nunca se sabe " –

+0

He marcado esa casilla, pero no parece marcar la diferencia; los campos todavía aparecen como espacios en blanco en la tabla en lugar de NULLs. También he verificado dos veces el archivo y no hay espacio entre mis delimitadores "|". Incluso la vista previa muestra los campos como espacios en blanco. ¿Me he perdido algo? – ofm

18

Acabo de tener el mismo problema. Lo resolví cambiando la propiedad RetainNulls en las propiedades del origen de archivo plano en la tarea de flujo de datos.

+0

Esto permite que los valores en blanco se traten como NULL y ahorra mucho trabajo al configurar columnas derivadas para manejar eso. –

0

en caso de que alguien está buscando la manera de hacer esto cuando la construcción del paquete mediante programación es necesario establecer la variable en el objeto CManagedComponentWrapper

CManagedComponentWrapper instanceSource = ComponentSource 
... 
instanceSource.SetComponentProperty("RetainNulls", true); 
Cuestiones relacionadas