簡體   English   中英

SSIS腳本組件轉換C#代碼日期轉換

[英]SSIS Script Component Transformation C# Code Date Conversion

我正在創建SSIS包以導入大型“固定寬度”文本文檔,並且需要轉換各種字段。 其中一個字段代表日期,寬度為8個字符。 格式為“ yyyyMMdd”,如下所示:

SomeDateField
20130415
20110122
19891023

但是,某些字段只有空格,而有些字段將全部為零00000000。那些不能轉換為日期的字段應返回NULL值。 我不允許替換類似1/1/1900的日期。

在試圖將其轉換為帶有表達式的日期字段后,我轉向了C#腳本轉換。

我的輸入列稱為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;
        }

然后,在文本導入中,通過在相同的腳本組件中重復該代碼並替換其他字段名稱,來跟進其他類似此日期字段的日期字段。 但是,我不必重復變量聲明。

即使此方法可行,我仍將不得不重復此過程,並希望確保這是執行這種檢查和轉換的最便捷方法。 是否有更簡潔的方法來實現相同的目的?

有更高效的方法嗎?

是否有一些簡單的方法可以將邏輯封裝在自定義方法或函數中,從而使此過程更加容易?

大衛,

我過去做過的一件事是使用重復使用的代碼創建(或讓別人為您創建).NET程序集。 您應該能夠在您編寫的任何腳本中引用此程序集。

我已將其用於SQL Server 2008 \\ 2008 R2 BIDS。 我尚未嘗試使用2012 BIDS。 讓我知道您是否需要更多信息。 我可能會寫一個關於這個的博客。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM