2016-07-21 7 views
0

私の現在のプロジェクトでは、既知のディレクトリですが不明な名前のファイルをデータベーステーブルに入れて、使用されるファイル。SSIS - ファイルシステムタスクが変数を割り当てるためにスクリプトタスクを使用した後にファイルパスを見つけることができません

これは私の最初のプロジェクトですので、いくつかのチュートリアルとスタックオーバーフローページを長く使いました。なぜなら、コントロールフローは(必要でないかもしれないとしても)各ループの内側にあるのはなぜですか?制御フロー:

http://i.stack.imgur.com/Nepgg.png

ここでは私のスクリプトタスクは、Excelファイルを検索し、変数を割り当てることです:

public void Main() 
    { 
     string directoryLocation = @"I:\All\L3VA Import\"; //Change this for new directory 
     int directoryLength = directoryLocation.Length; 

     string[] filePath = Directory.GetFiles(directoryLocation, "*.xls*"); 

     int filePathLength = filePath[0].Length; 

     Dts.Variables["myConnectionString"].Value = filePath[0]; 
     Dts.Variables["myFileName"].Value = filePath[0].Substring(directoryLength, filePathLength - directoryLength); 

私は、OLE DBにスプレッドシートのデータをポンプするためにデータフロータスクを使用し、それは独力では動作しませんが、スクリプトタスクが最初に実行された場合は、私の変数が正しく割り当てられていると思います。

私は[ファイルシステムタスクを使用してこのファイルを移動し、名前を変更しようとすると、私の問題は、これらの変数の値を見つけることではないようで、エラーが発生している、付属しています。ここ

Error: 0xC002F304 at File System Task, File System Task: An error occurred with >the following error message: "Could not find a part of the path.".

Task failed: File System Task

は変数リストですファイルシステムタスク: http://i.stack.imgur.com/p6FWD.png

+0

申し訳ありませんが、なぜ活動は並行であり、連続していないのですか?最初にインポートを実行してからファイルを移動するべきではありませんか?ファイルシステムタスク内のファイル名だけでなく、パス全体でmyConnectionString変数を設定してください。ファイルシステムタスクのソース変数と宛先変数には、パス+ファイル名 –

+0

が含まれている必要があります。コード を参照すると、string [] filePath = Directory.GetFiles(directoryLocation、 "* .xls *"); Dts.Variables ["myConnectionString"]。値=ファイルパス[0]。 myConnectionStringはファイルパス全体です。私は、余分な緑色の矢印を追加して、ファイルシステムタスクにmyConnectionStringの値を保持することを望んでいましたが、これは起きていないようです。 –

+0

...すべてがOKです。正しいことなど... –

答えて

0

1つ以上のファイルが存在する場合、どのExcelファイルが最も適切かをどのように決定するかが分かります。複数回繰り返す必要がありますか?とにかく、あなたがForeach Loop Containerを使用し、あなたのスクリプトと同じようにディレクトリを検索するように設定すると、スクリプトタスクは必要ありません。ファイルパスを保持する変数

  • がディレクトリを検索し、あなただけのセットアップ
  • はあなたの後、あなたのdata flow
  • を追加したものに、変数をマッピングするためにForeach Loop Containerと設定を追加

    • セットアップを次のようにだからあなたが行うことができますセットアップ静的Excel Connectionセットアップであなたのdata flowconnection string
    • ファイルシステムタスクを追加としてFile Path Variableを使用するConnection Managerexpressionソースパスを変数として設定する

    目的のパスを動的に構築する必要がありますので、より簡単な方法でタスクを達成するためには、さらにいくつかの変数が必要になる可能性があるので注意してください。

    1. ファイルパス - しかしforeeach loop
    2. FullFilePathから名前とファイル拡張子のみホールド - 検索されているディレクトリにそのファイルパスを結合するために式を使用して動的変数、これは、Excel接続マネージャにと上のソースとして使用さになるだろうファイルシステムタスク。
    3. DestinationFullFilePath - これは、FilePathと宛先ディレクトリを結合する式です。これはファイルシステムタスクの宛先として使用されます。
  • 関連する問題