我对SSIS及其数据类型相对较新。我已成功创建数据流任务,将数据从逗号分隔的.txt平面文件导入SQL Server。运行任务时,在.txt文件中的日期字段为0的位置发生错误。
对于将日期字段转换为0到Null的派生列表达式,我到目前为止已经提出了以下内容...
[Latest Bill Due Date]==0 ? NULL(DT_DATE) : (DT_DATE)[Latest Bill Due Date]
...但不接受逻辑并显示错误消息:
数据类型“DT_WSTR”和“DT_I4”与二进制运算符“==”不兼容。操作数类型无法隐式转换为操作的兼容类型。要执行此操作,需要使用强制转换运算符显式转换一个或两个操作数。
提前感谢任何方向。
答案 0 :(得分:-1)
我遇到了类似的问题,当在文本文件中有00000000
值时,必须在datetime列中将其转换为null。最终为我工作的是在列中建立null
值为default
的表,并添加脚本组件作为转换。添加类似于' VerifyNullDateVar'的列输出。并在脚本内部执行类似
if (Row.DATEVAR == 0)
{
//do whatever you want to do if the input value is an actual date
Row.VerifyNullDateVar = 2;
}
else
Row.VerifyNullDateVar = 1;
DATEVAR 是您从文本文件中获取的输入列。之后,使用派生列从 VerifyNullDateVar
中读取值VerifyNullDating == 1
VerifyNullDating == 2
最后,您需要设置2个OLEDB目标,一个可以在表中保存日期值;另一个当你保存其中的任何内容时,它会获得默认的null
值