2011-10-24 4 views
0

SSIS(SQL Server Integration Services)を使用してフォルダーとそのすべての子どもを訪問する必要があります。現時点では、フォルダパスを読み込んだ後に変数に設定することで、現在のフォルダのすべての.txtファイルをループし、あらかじめ生成された(ヘッド情報付き)xmlファイルに書き込むことができました。SSISを使用して現在の訪問先フォルダーに従って動的XMLファイルを生成するディレクトリを再帰的にナビゲートします

私が今必要とするのは、アクセスされたフォルダごとに新しいxmlファイルを作成できることです(開始コンテンツは常に同じになります)。新しいフォルダにアクセスした後の最初の操作として、これを作成できたら、これまで開発したロジックを単純に適用できます。

しかし、私はその時点でブロックされています。なぜなら、(フルパスで)ファイルを読むループの中で、「アクセスされたフォルダが新しい場合はxmlファイルを作成する」という表現を見つけることができないからです。

答えて

2

私がこの問題を理解していると仮定すると、ディレクトリ構造全体を歩かなければならず、見つかった各フォルダについて基本XMLファイルを作成する必要があります。次に、そのフォルダにあるテキストファイルごとに、XMLファイルに対して何らかの操作を行います。あなたはXMLファイルを一度しか作成しません。

enter image description here

私はこのようなプロセスを想定します。

フォルダ構造が含まれています(directoryXML>System.IO.GetDirectoriesの使用は、変数を移入することができますスクリプトタスク、

<Dir> 
    <D>C:\ssisdata</D> 
    <D>C:\ssisdata\a</D> 
    <D>C:\ssidata\a\b</D> 
</Dir> 
のようなもの

変数(currentDirecotry)にそのXMLを細断処理す​​るForeach Nodelist Enumeratorを使用してください。

あなたははcurrentDirectoryでXMLファイルを作成するあなたのワンタイムタスクを実行すると思います。

さらにforeachの上の表現としてはcurrentDirectory変数を使用してファイル列挙子(お尻* .txtのFileSpecを持つディレクトリに対してign)を実行すると、その仕様を満たすすべてのファイルに対してタスクを実行できます。希望の結果が得られないので、トラバースサブフォルダオプションをチェックしないでください。

これは、私がSSISに精通していると仮定しているため、かなり高いレベルのアプローチですが、アプローチは健全でなければなりません。あなたが特定の固執ポイントを持っているかどうかを教えてください。

+0

ヒントのおかげで、私はすでに別のタスクでプロセスを分割することに近づいていましたが、あなたは私に助けてくれました。そして良い説明のために+1! – Francesco