我正在创建 SSIS 包以导入大型固定宽度文本文档,并且需要转换各种字段。一个这样的字段代表日期并且是 8 个字符宽。格式为“yyyyMMdd”,如下所示:
SomeDateField
20130415
20110122
19891023
但是,有些字段只有空格,有些字段会全为零 00000000。不能转换为日期的字段应返回 NULL 值。我不能替换像 1/1/1900 这样的日期。
在徒劳地尝试将其转换为带有表达式的日期字段后,我转向了 C# Script Transformation。
我的输入列称为 sSoldDate 并且是只读的。我已经配置了一个名为 SoldDate 的 DT-DBDATE 数据类型的输出。
我想出的代码是:
DateTime varDate;
bool isParsed;
isParsed = DateTime.TryParseExact(Row.sSoldDate, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out varDate);
if (isParsed)
{
Row.SoldDate = varDate;
}
else
{
Row.SoldDate_IsNull = true;
}
然后,我通过在同一脚本组件中重复该代码并替换其他字段名称来跟进文本导入中的其他日期字段,例如这个字段。但是,我不必重复变量声明。
尽管这可行,但我将不得不重复这个过程很多,并想确保这是执行这种检查和转换的最方便的方法。有没有更简洁的方法来实现同样的目标?
有没有更高效的方法?
是否有一些简单的方法可以将逻辑封装在自定义方法或函数中,从而使这个过程更容易?