2017-05-10 23 views
1

xyz_20170510_040544_det.txtという名前のファイルがあります。 日付スタンプは、get dateを含む式に実装する方が簡単です。 タイムスタンプの問題は、毎日ファイル名の時刻が変更されている を保持しています。だから私は、その場合以下SSIS式ビルダー

で式を書くのですかは へのパッケージのSSIS式ビルダでの式は、今、ファイルを見つけることができません私は

@[User::DataLoadDir]+"xyz_"+ (DT_STR,4,1252)DATEPART("yyyy" , 
getdate()) + RIGHT("0" + (DT_STR,4,1252)DATEPART("mm" , getdate()), 
2) + RIGHT("0" + (DT_STR,4,1252)DATEPART("dd" , getdate()), 2) +.txt" 

を使用していたファイルを取得することですタイムスタンプは含まれていないためです。毎日違うので、ここにタイムスタンプを含めるにはどうすればいいですか?

答えて

0

"yyyymmdd_hhmmss"(20170510_132402)の形式で、DataLoadDir変数と ".txt"を連結することができます。

(DT_STR、4、1252)DATEPART( "YYYY"、GETDATE()) + RIGHT( "0" +(DT_STR、2、1252)DATEPART( "MM"、GETDATE())、2) + "0" +(DT_STR、2、1252)DATEPART( "dd"、GETDATE())、2)+ "_" + RIGHT( "0" +(DT_STR、2、1252) 2) + RIGHT( "0" +(DT_STR、2、1252)DATEPART( "mi"、GETDATE())、2) + 2)

私はこの形式で複数のファイルを生成しているので、実際にはこれを式で1つの変数に割り当ててから、その変数を新しいファイルごとに連結します。接続マネージャー。これもやっているのであれば、あなたのパッケージをよりモジュラー化し、冗長性を避けるために同じアプローチをお勧めします。 1つの変数に変更を加えると、それは自動的に使用されます。

しかし、タイムスタンプがすでに含まれているディレクトリからファイルをキャプチャしようとしているため、タイムスタンプを含まず、ファイル名の最初の部分をワイルドカードとして使用するだけで、次のことをお勧めします。

  • 変数に次の式を適用します。これはファイル名の "xyz_20170510"部分だけを返します。

    (DATEPART [ユーザー:: DataLoadDir] + "XYZ _" +(DT_STR、4,1252)DATEPART( "YYYY"、 GETDATE())+ RIGHT( "0" +(DT_STR、4,1252)@ "MM"、GETDATE())、 2)+ RIGHT( "0" +(DT_STR、4,1252)DATEPART( "DD"、GETDATE())、準備として、新しい変数2)

  • パスそのファイルで必要な作業を行うスクリプトタスク(次はC#を使用しています)にのみ適用されます。次のコードは、C# exampleから集めたものから変更されています。 C#が望ましくない場合は、システムタスクを含むファイル名に列挙されたForEachループを使用して同じことを行うこともできます。

ストリングFileWildCard = Dts.Variables [ "ユーザー:: FileWildCard"] Value.ToString()。 string [] files = System.IO.Directory.GetFiles(@ "\ dev01 \ E $ \ Data \ Proc \ Opt"、@FileWildCard + "* .txt"); foreach(ファイル内の文字列ファイル) { System.IO.File.Copy(ファイル、@ "\ dev01 \ E $ \ Data \ Proc \ Optテスト\" + System.IO.Path。GetFileName(ファイル)、true); }

これが役立つかどうかお知らせください。

+0

私のタイムスタンプは毎日ファイルごとに異なります。 RIGHT( "0" +(DT_STR、2、1252)DATEPART( "hh"、GETDATE())、2)+ RIGHT( "0" )、2)+ RIGHT( "0" +(DT_STR、2、1252)DATEPART( "ss"、GETDATE())、2)現在時刻を取得します。毎日ファイル名を変更するように設定するにはどうすればいいですか –

+0

あなたの問題は混乱します。最初は、ファイル名にタイムスタンプを動的に含むファイルを生成したいかのように聞こえました。しかし、今私は理解していない。 「毎日ファイル名を変更するように設定する」とはどういう意味ですか?生成されたファイルの "大きな画像"の目的は何ですか?実際には生成していませんが、タイムスタンプの部分だけに基づいてディレクトリからキャプチャしようとしていますか? – user3662215

+0

はい私はタイムスタンプを無視してフォルダからファイルを取得する必要があります –

関連する問題