大きな固定幅のテキスト ドキュメントをインポートする SSIS パッケージを作成しており、さまざまなフィールドを変換する必要があります。そのようなフィールドの 1 つは日付を表し、幅は 8 文字です。形式は「yyyyMMdd」で、次のようになります。
SomeDateField
20130415
20110122
19891023
ただし、空白しかないフィールドもあれば、すべてゼロの 00000000 を持つフィールドもあります。日付に変換できないフィールドは、NULL 値を返す必要があります。1900 年 1 月 1 日などの日付に置き換えることはできません。
これを式で日付フィールドに変換しようとしても無駄だったので、C# スクリプト変換に目を向けました。
私の入力列は sSoldDate と呼ばれ、ReadOnly です。DT-DBDATE データ型の SoldDate という出力を構成しました。
私が思いついたコードは次のとおりです。
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;
}
次に、同じスクリプト コンポーネントでそのコードを繰り返し、他のフィールド名に置き換えて、テキスト インポートでこのような他の日付フィールドをフォローアップします。ただし、変数宣言を繰り返す必要はありません。
これは機能しますが、このプロセスを何度も繰り返さなければならないので、これがこの種のチェックと変換を実行する最も適切な方法であることを確認したかったのです。同じことを達成するためのより簡潔な方法はありますか?
よりパフォーマンスの高い方法はありますか?
このプロセスを容易にするカスタム メソッドまたは関数にロジックをカプセル化する簡単な方法はありますか?