我对SSIS及其数据类型比较陌生。我已经成功地创建了一个数据流任务,该任务将数据从逗号分隔的.txt平面文件导入Server。在运行任务时,在.txt文件中的日期字段有0时发生错误。
对于派生列表达式,将0转换为空的日期字段,到目前为止我得到了以下内容.
[Latest Bill Due Date]==0 ? NULL(DT_DATE) : (DT_DATE)[Latest Bill Due Date]
...but逻辑未被接受,并出现错误消息:
数据类型"DT_WSTR“和"DT_I4”与二进制运算符"==“不兼容。操作数类型不能隐式转换为操作的兼容类型。要执行此操作,需要使用cast运算符显式转换一个操作数或两个操作数。
提前感谢您的任何指示。
发布于 2017-02-10 20:41:45
我也遇到了类似的问题,当文本文件中有一个00000000
值时,必须在datetime列中将其转换为null。最后为我工作的是在列中建立了以null
值作为default
的表,并添加了一个脚本组件作为Transformation。添加为列输出,类似于“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
值。
https://stackoverflow.com/questions/42167553
复制相似问题