type tipos tipo smallint long datos data convert sql-server ssis

sql-server - smallint - tipos de datos sql server



SSIS Conversión de un char en booleano/bit (3)

Tengo un paquete SSIS para cargar datos; como puede recordar, hay indicadores que están en los archivos de datos como Y / N char (1) cuando intento cargarlos como indicadores de bits en SQL Server. Estoy especificando las columnas en el archivo de datos como String [DT_STR] y tengo una tarea de conversión de datos para convertirlos en booleanos basados ​​en la siguiente expresión (recibí el mismo error de conversión simplemente especificándolos como DT_BOOL para empezar, a pesar de que SSIS pregunta para decir qué valores debería considerar como booleanos):

[ColumnName] == "Y" ? (DT_BOOL)1 : (DT_BOOL)0

La ejecución del paquete da un error y me dice Invalid character value for cast specification The value could not be converted because of a potential loss of data y The value could not be converted because of a potential loss of data en la importación real a SQL Server (a través de un destino OLE DB).

¿Qué me falta aquí para que se convierta correctamente?


Prueba esto:

(DT_BOOL)([ColumnName] == "Y" ? 1 : 0)

Esto también tiene la ventaja de establecer automáticamente el tipo de datos de la columna derivada correctamente.


Pude resolverlo usando una columna derivada y, en lugar de reemplazar las columnas char, DT_BOOL nuevas columnas configuradas para el tipo de DT_BOOL así:

[Recycled] == "Y" ? True : False


Tuve el mismo problema con

(DT_BOOL) ([ColumnName] == "Y"? 1: 0)

y solo pude hacer que funcionara sacando la porción "(DT_BOOL)" de la expresión y haciendo el trabajo de convertirla en booleano en la parte "Tipo de datos" seleccionando "Boolean [DT_BOOL]. No hay problemas después ese.