ForeachコンテナのForeach File 列挙子を使う

Pocket

SSISでForeach コンテナをよく使うので、その備忘録
今回は Foreach File 列挙子について

とあるディレクトリにある .tsv ファイルのデータをDatabase にインポートしたい時ってありますよね
こんな時、SSIS の Foreach コンテナを使って簡単にできます

まずは、C:\data\ 配下にある *.tsv のファイル名を取得することを例にします。

制御フロー上のForeach ループコンテナを編集すると Foreach ループエディタが開きます。
エディタの左側に「コレクション」があるので、選択します。

コレクションでは、3箇所設定を行います。
最初にウィンドウ右側に Enumerator の項目が出てきます。
そこで 「Foreach File 列挙子」を選択します。

2箇所目ですが、「列挙子の構成」の「フォルダ」を設定します。
今回はC:\data\ の *.tsv ファイルを取得するので、C:\data\ を設定します。
そして「ファイル」は、*.tsv とします。

最後に「ファイル名の取得」を設定します。
これは、変数にどのような形式で値を代入するかです。
絶対パスになる「完全修飾名」を選択するのが無難だと思います。

続いてウィンドウ左側の「変数のマッピング」を選択します。
ここでは、コレクションでファイル名を取得する設定をしました。
取得したファイル名の代入先の設定を変数のマッピングでします。
「変数」にはファイル名を代入したい変数名をつけます。
変数がないなら<新しい変数…>を選択して変数を追加します。
ここでは、変数の名前、名前空間、値の型、初期値を設定します。
ファイル名が入るので、値の型はStringにします。
名前空間はデフォルトではUserです。
tsvFileName のように変数の名前を設定します。

変数を設定したら、インデックスを 0とします。

あとは、ループ内で@[User::tsvFileName] を使ってゴニョゴニョしましょう

php で書くと下のような感じですね。

foreach(glob("C:\data\*.tsv") as $tsvFileName)
{
}

コメントを残す