TableDB関数
TableDB関数は、マッピング時に使用できるマッパー関数で、SQL文を実行し、データベースのテーブルから指定のキーで検索を行って、その結果を値として得ることができます。マッピングウィンドウ内にコンポーネントを配置し、SQL文を設定します。
TableDB関数でデータベースを検索する
1. Mapperコンポーネントを含むフローを作成し、入出力のファイルパスやストリーム定義を設定する
2. マッピングウィンドウを表示し、パレットの「変換」タブからTableDB関数(「RDB のテーブルを使って、キーから値に変換」)を配置する
HINT
ここでは、Mapperコンポーネントへの入力ストリームとして、FileGetコンポーネントを配置し、「商品番号」のフィールドに4行の商品番号を含むCSVファイルを指定しています。
3. TableDB関数コンポーネントが選択されてい る状態で、インスペクタの「コネクション名」 プロパティで接続先のコネクションを選択する
4. TableDB関数コンポーネントアイコンをダブルクリックすると、SQLビルダーが表示されるので、テーブルを選択し、取得したいフィールドを指定して、「OK」をクリックする
5. SQL文を修正するため、インスペクタの「SQL文」プロパティの値欄で「...」をクリックする
6. 「SQL文プロパティの編集」ダイアログで、マッピングの内容に合わせてSQL文を編集する
HINT
TableDB関数でのSQL文の設定
SQLを手動で編集する場合は、JavaのPreparedStatementで使用できる「?」を使ってキーを指定します。たとえば、「select field2 from tablename where field1 =?」とSQL文に指定した場合は、TableDBへの入力が ? の部分に置き換わり検索条件が指定されます。キーが2つ以上ある場合は「select field2 from table name where field1=? and field3=?」のように指定します。この場合TableDBへの入力は2つ必要になり、それぞれが ? の部分に置き換わります。
7. SQL文の設定内容によって、コネクタの数が変更されるので、それに合わせてマッピングを設定する
フローを実行すると、指定したフィールドの値によってデータベースが検索され、該当するデータが取り出されます。上の例では、「商品」テーブルから、指定した商品番号を持つデータの商品番号と商品名が検索され、出力されます。
CAUTION
TableDB関数では、SQLビルダーで定義したパラメーター名、順序、データ型は使用されないので注意してください。特に、データ型に関しては、SQLビルダーで「SELECTテスト」を行うときは定義したパラメーターのデータ型が使用されますが、フローで実行するときは、実行時にパラメーターに入力されたデータのデータ型が使用されます。