Road to DBD

Road to DBD

PR

×

カレンダー

バックナンバー

2026.05
2026.04
2026.03
2026.02
2026.01

キーワードサーチ

▼キーワード検索

プロフィール

ジャムシード

ジャムシード

コメント新着

mayggW@ продвижение раскрутка сайта договор Заказать seo поисковую оптимизацию сайт…
通りすがりプログラマー@ Re:複数テーブルによるUPDATE(02/11) 随分前の記事にコメント失礼します。 rown…
ワンコ0995 @ Re:包含データベース(06/02) ((データベース)データベース,)デー…
しぐしぐ@ Re:TOP 100 PERCENT(05/08) お世話になっております。 最近、旧システ…
ハニー@ Re:INSTEAD OFトリガの限界(07/16) 1SQLでやらずに変数に入れればいいじゃん
2009.01.04
XML
カテゴリ: DB-SQL Server 2008
SSISでファイルの内容を読み出すが、データベースには入れたくない場合、言い換えれば情報だけ抽出して使いたい場合には「データフロータスク」の「レコードセット変換先」は便利だ。
ただ、読み出したものをどうやって使うかは意外と面倒くさいので、備忘録的に。

1:For Eachループコンテナを使う
 Foreach ADO列挙子を使えば、1行ずつ読みだすことができるので、比較的容易。
 ただし、読みだすためにコンテナと変数の定義が必要なので、処理の内容の割にはフロー上大掛かりなものになってしまう。

2:スクリプトタスクで、ADOレコードセットとして使う
 レコードセット変換先はインラインADOレコードセットであるとなっているが、ADO.NETのDataAdapterなどでうまく変換できないので、結局レガシーのADOを使う方法が一般的。

 この方法は以下の細工が必要。
 ・ADODB.dllはSSISから参照可能ではないため、ADODB.dllをProgramFilesフォルダから検索して、Windows\Microsoft.NET\Framework\の該当バージョンのフォルダにコピーする


  ただし、以下のように列数も簡単に取れるので、ADOになれた人には使いやすい。



  Dim rs As ADODB.Recordset
  rs = ReadVariable("FileData")
  Dts.Variables("ColCnt").Value = rs.Fields.Count
  Dts.TaskResult = ScriptResults.Success
End Sub



Private Function ReadVariable(ByVal varName As String) As Object
  Dim result As Object
  Try
    Dim vars As Variables
    Dts.VariableDispenser.LockForRead(varName)
    Dts.VariableDispenser.GetVariables(vars)
    Try
      result = vars(varName).Value
    Catch ex As Exception
      Throw ex
    Finally
      vars.Unlock()
    End Try
  Catch ex As Exception
    Throw ex
  End Try
  Return result
End Function

Private Sub WriteVariable(ByVal varName As String, ByVal varValue As Object)
  Try
    Dim vars As Variables
    Dts.VariableDispenser.LockForWrite(varName)
    Dts.VariableDispenser.GetVariables(vars)
    Try
      vars(varName).Value = varValue
    Catch ex As Exception
      Throw ex
    Finally
      vars.Unlock()
    End Try
  Catch ex As Exception
    Throw ex
  End Try
End Sub






お気に入りの記事を「いいね!」で応援しよう

最終更新日  2009.01.04 22:00:00
コメント(0) | コメントを書く
[DB-SQL Server 2008] カテゴリの最新記事


■コメント

お名前
タイトル
メッセージ
画像認証
上の画像で表示されている数字を入力して下さい。


利用規約 に同意してコメントを
※コメントに関するよくある質問は、 こちら をご確認ください。


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
Mobilize your Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: