在加载到目标dtabase之前,有没有办法在从Sourcefile中提取后检查SSIS包派生列表达式中的Date(如TSQL中的isDate函数)列?
由于
答案 0 :(得分:2)
没有内置函数,但您可以运行脚本任务并使用vb.net代码检查列是否为日期并按照您的意愿对其进行操作...
答案 1 :(得分:2)
我有类似的问题。我在文本文件中有一个日期/时间,但该字段在日期和时间之间有一个短划线。我创建了一个派生列来在短划线上进行替换:
REPLACE([TimeField], "- ", "")
然后,我添加了一个转换列,将字段转换为日期。我选择忽略错误。然后我添加了另一个派生列来检查转换后的字段是否为NULL,表明它无法转换该值。如果是的话,我把它设置为当前日期。
答案 2 :(得分:1)
您可以插入一个数据转换任务。然后根据需要重定向行,要么完全导致导入失败,要么重新导航不起作用的行。
或者您可以尝试使用条件拆分,然后将字段转换为日期数据类型,然后沿另一条路径发送失败(删除记录或将字段归零将是常见操作。)
答案 3 :(得分:1)
另见http://www.sqlis.com/sqlis/post/Expression-Date-Functions.aspx> “IsDate解决方法”是一种可以适应的技术
答案 4 :(得分:0)
您可以使用如下条件语句检查变量是否有日期:
testDateVariable?true:false
例如,如果date > 2
则为true
(并根据需要设置日期或格式化日期)。如果是false
,则输入null(将true替换为日期格式,将false替换为null)。
这一切都在SSIS的一个列中。