SSIS将char转换为布尔/位

Way*_*ina 13 sql-server ssis

我有一个SSIS包来加载数据; 您可能还记得,当我尝试将它们作为位标志加载到SQL Server中时,数据文件中有标记为Y/N char(1).我正在指定数据文件中的列,String [DT_STR]并且我有一个数据转换任务,根据以下表达式将它们转换为布尔值(我收到相同的转换错误,只是将它们指定为DT_BOOL开头,尽管SSIS要求我说什么值应该考虑为boolean):

[ColumnName] == "Y" ? (DT_BOOL)1 : (DT_BOOL)0
Run Code Online (Sandbox Code Playgroud)

运行该包会出现错误,并告诉我Invalid character value for cast specificationThe value could not be converted because of a potential loss of data实际导入到SQL Server(通过OLE DB目标).

我在这里错过了什么来让它正确转换?

Cad*_*oux 18

试试这个:

(DT_BOOL)([ColumnName] == "Y" ? 1 : 0)
Run Code Online (Sandbox Code Playgroud)

这还具有正确自动设置派生列的数据类型的优点.


Way*_*ina 11

我能够通过使用派生列来解决它,而不是替换char列,创建设置为DT_BOOL类似的新列:

[Recycled] == "Y" ? True : False
Run Code Online (Sandbox Code Playgroud)