SSIS脚本组件转换C#代码日期转换

时间:2013-04-19 20:23:47

标签: c# ssis type-conversion

我正在创建SSIS包以导入大型固定宽度文本文档,并需要转换各种字段。一个这样的字段代表日期,宽8个字符。格式为“yyyyMMdd”,如下所示:

SomeDateField
20130415
20110122
19891023

但是,某些字段只有空格,有些字段的全部为0000000。那些无法转换为日期的字段应返回NULL值。我不允许替换像1/1/1900这样的日期。

在徒劳地尝试将其转换为带表达式的日期字段后,我转向C#Script Transformation。

我的输入列名为sSoldDate,是ReadOnly。我已经配置了一个名为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;
        }

然后我在文本导入中跟进其他日期字段,通过在同一个脚本组件中重复该代码并替换其他字段名称。但是,我不必重复变量声明。

尽管这有效,但我将不得不重复这个过程很多,并且想确保这是执行此类检查和转换的最便捷方式。有没有更简洁的方法来实现同样的事情?

是否有更高效的方式?

是否有一些简单的方法可以将逻辑封装在自定义方法或函数中,从而使这个过程更容易?

1 个答案:

答案 0 :(得分:1)

大卫,

我过去做过的一件事是创建(或者有人为你创建)一个.NET程序集,其中包含您重复使用的代码。您应该能够在您编写的任何脚本中引用此程序集。

我已经将它用于SQL Server 2008 \ 2008 R2 BIDS。我还没有尝试过2012 BIDS。如果您需要更多信息,请告诉我。我可能会写一篇关于此的博客。