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) { }