none
フラットファイル接続マネージャのファイル名をパラメータで指定したい RRS feed

  • 質問

  • 現在フラットファイルからテーブルにインポートする単純なデータフロータスクが出来ています。
    ただし固定の複数のファイル名から数個インポートする必要があります。
    接続マネージャーをコピーしてファイル名を変えることは出来ないようですし出来れば

    「接続マネージャ」のファイル名を"A.txt"に変更
    「データフロータスク」を実行
    「接続マネージャ」のファイル名を"B.txt"に変更 「データフロータスク」を実行
    「接続マネージャ」のファイル名を"C.txt"に変更 「データフロータスク」を実行
    といった制御をしたいのですがどのようにすればよいでしょうか?
    2010年2月16日 10:36

回答

  • こんな感じになると思います。
    ・ファイル名(またはファイルパス)の変数を用意する。
    ・フラットファイル接続マネージャのExpressions - ConnectionString プロパティを、上記の変数を使って設定する。
    ・Foreach ループコンテナかFor ループコンテナを使って処理を繰り返す。
    ・変数の値を設定する処理を加える。
    -Foreach ループコンテナなら、「変数のマッピング」の設定で可能です。
    -Forループコンテナなら、スクリプトタスクでも使えばいいと思います。

    2010年2月17日 1:23
  • SSIS の変数について全般的な説明はできませんので、こちらをご確認ください。
    http://technet.microsoft.com/ja-jp/library/ms140216(SQL.90).aspx

    エラーの発生原因は、Forループコンテナの評価式(EvalExpression)は 真偽値/bool型/boolean で結果が得られる式とする必要があるため、と考えられます。
    ※InitExpression、EvalExpression、AssignExpresion (初期化式、評価式、代入式)の一般的な使い方は上記URLの「変数の使用法のシナリオ > For ループ式」をご確認ください。

    なお、「フラットファイルソース」データフローコンポーネントのNameプロパティを操作しても、データソースとなるファイルが変わる訳ではありません。
    フラットファイル接続マネージャのExpressions - ConnectionString プロパティを操作することをお勧めします。
    2010年2月21日 17:28

すべての返信

  • こんな感じになると思います。
    ・ファイル名(またはファイルパス)の変数を用意する。
    ・フラットファイル接続マネージャのExpressions - ConnectionString プロパティを、上記の変数を使って設定する。
    ・Foreach ループコンテナかFor ループコンテナを使って処理を繰り返す。
    ・変数の値を設定する処理を加える。
    -Foreach ループコンテナなら、「変数のマッピング」の設定で可能です。
    -Forループコンテナなら、スクリプトタスクでも使えばいいと思います。

    2010年2月17日 1:23
  • 返信ありがとうございます。

    データ 変換タスク内のフラットファイルソースのNAMEは「flat」です。
    Forループコンテナを置きました。
    ForループのプロパティのInitExpression,EvalExpression,AssignExpresionに式を書けばいいと思います。
    InitExpressionに
    flat.NAME="A.txt"
    EvalExpressionに
    flat.NAME="B.TXT"
    AssignExpressionに
    flat.NAME="B.TXT"

    変数についてはまだ理解していないのでこれで取り敢えず「A.TXT」だけを処理して終われることを期待しました。
    結果としては
    For ループ コンテナ でエラーが発生しました: 式 "flat.NAME="B.TXT"" を解析できませんでした。行番号 "1"、文字番号 "10" の等号 (=) は予期されていませんでした。指定された場所に 2 つの等号 (==) が必要である可能性があります。
    
    

    もう一つ、変数の使い方についても教えていただけたらと思います。
    2010年2月20日 0:07
  • SSIS の変数について全般的な説明はできませんので、こちらをご確認ください。
    http://technet.microsoft.com/ja-jp/library/ms140216(SQL.90).aspx

    エラーの発生原因は、Forループコンテナの評価式(EvalExpression)は 真偽値/bool型/boolean で結果が得られる式とする必要があるため、と考えられます。
    ※InitExpression、EvalExpression、AssignExpresion (初期化式、評価式、代入式)の一般的な使い方は上記URLの「変数の使用法のシナリオ > For ループ式」をご確認ください。

    なお、「フラットファイルソース」データフローコンポーネントのNameプロパティを操作しても、データソースとなるファイルが変わる訳ではありません。
    フラットファイル接続マネージャのExpressions - ConnectionString プロパティを操作することをお勧めします。
    2010年2月21日 17:28
  • こんにちは。フォーラムオペレーターの高橋春樹です。

    nagasakitさん
    アドバイスの投稿、有難うございました。

    和和和さん
    MSDNフォーラムのご利用ありがとうございます。
    nagasakitさんから追加のアドバイスがあったと思うのですが、如何でしょうか?
    今回、nagasakitさんからの投稿が有用な情報だと思いましたので、
    回答マークを付けさせてもらいました。
    和和和さんの現在の状況も気になるので、nagasakitさんからの投稿に返信して頂くと助かります。

    尚、回答マークは問題解決を意味するものではないので、その他アドバイスがありましたら
    ご投稿の程、宜しくお願いします。


    マイクロソフト株式会社 フォーラム オペレーター 高橋春樹
    2010年2月25日 2:26