我有一个SSIS包来加载数据; 您可能还记得,当我尝试将它们作为位标志加载到SQL Server中时,数据文件中有标记为Y/N char(1).我正在指定数据文件中的列,String [DT_STR]
并且我有一个数据转换任务,根据以下表达式将它们转换为布尔值(我收到相同的转换错误,只是将它们指定为DT_BOOL开头,尽管SSIS要求我说什么值应该考虑为boolean):
[ColumnName] == "Y" ? (DT_BOOL)1 : (DT_BOOL)0
运行该包会出现错误,并告诉我Invalid character value for cast specification
和The value could not be converted because of a potential loss of data
实际导入到SQL Server(通过OLE DB目标).
我在这里错过了什么来让它正确转换?
试试这个:
(DT_BOOL)([ColumnName] == "Y" ? 1 : 0)
这还具有正确自动设置派生列的数据类型的优点.
我能够通过使用派生列来解决它,而不是替换char列,创建设置为DT_BOOL
类似的新列:
[Recycled] == "Y" ? True : False