[英]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.