SQL Command

SQL Command では、データフローの各レコードに対して 1 つ以上の SQL Command を実行します。SQL Command を使用すると、次の操作を実行できます。

  • サブクエリ/他のテーブルとの結合を含む文など、複雑な INSERT/UPDATE 文を実行する。
  • データを挿入/更新して参照の整合性を保持した後にテーブルを更新する。
  • データベースのレコードを更新または削除してから置換レコードをロードする。
  • 単一のトランザクションで複数のテーブルを更新する。

主要な SQL Command を実行する前および後に追加の SQL Command を実行し、ストアド プロシージャを呼び出すことができます。

注: SQL Command から呼び出されるストアド プロシージャでは OUT パラメータを使用できません。
注: SQL Command の複数の実行時インスタンスを使用することで、パフォーマンスを大きく改善できます。複数の実行時インスタンスを指定するには、[実行時] ボタンをクリックします。

全般

[全般] タブは、各レコードに対して 1 回実行する動的な SQL 文を指定する場所です。次の表に、[全般] タブで使用可能なオプションを示します。

オプション 説明

接続

使用するデータベース接続を選択します。使用できるデータベース接続は、Management Console の Connection Manager に定義されている接続によって異なります。新しいデータベース接続を作成、あるいは既存のデータベース接続を変更または削除する必要がある場合は、[管理] をクリックします。

データベース接続を追加または変更する場合は、次のフィールドに必要な値を指定します。
接続名
接続の名前を入力します。任意の名前にすることができます。
データベース ドライバ
適切なデータベース タイプを選択します。
接続オプション
データベースへの接続に使用するホスト、ポート、インスタンス、ユーザ名、およびパスワードを指定します。

SQL 文

データフローで各レコードに対して実行する SQL 文を入力します。入力を開始すると、自動入力ポップアップ ウィンドウに有効な SQL Command が表示されます。複数の SQL 文を入力する場合は、各 SQL 文をセミコロン (;) で区切ります。

データフロー フィールドの値を指定するには、次の構文を使用します。

${<field name>}

<field name> は、データフローのフィールドの名前です。

例:

UPDATE MyDatabase.dbo.customer
SET name=${Name}
WHERE id=${ID};

この例では、${Name} はデータフローの Name フィールドの値で置き換えられ、${ID} はデータフローの ID フィールドの値で置き換えられます。

注: クエリでは完全修飾名前を使用する必要があります。例えば、MyDatabase.dbo.customer を使用する必要があります。

トランザクション処理中

レコードをバッチ処理するか、すべてのレコードを同時に処理するかを指定します。次のいずれかです。

バッチ サイズ
レコードを指定されたサイズのバッチにレコードをグループ化し、一度に 1 つずつバッチを処理します。
実行全体
すべてのレコードから 1 つの大きなバッチを作成し、すべてのトランザクションを同時に処理します。

エラー処理

SQL Command の実行中にエラーが検出された場合の処理を指定します。次のいずれかです。

エラー時にデータフローを終了しない
SQL Command の実行中にデータベースがエラーを返しても、データフローは実行を継続します。
データフローを終了するエラー数
データベースが返すエラー数が指定された数に達すると、データフローは実行を停止します。
注: SQL の構文エラーがある場合は、ここで選択する設定にかかわらず、データフローは常に終了します。

また、オプションでエラー レコードをシンクに書き込むこともできます。その場合は、SQL Command エラー ポートを目的のシンクのタイプに接続します。エラー ポートは、データフロー内のステージ アイコンの右側に白の三角形で表されます。例えば、エラー レコードをフラット ファイルに書き込むには、次のように、SQL Command エラー ポートを Write to File ステージに接続します。

プリ/ポスト SQL

[プリ/ポスト SQL] タブは、データフローの実行あたり 1 回実行する SQL 文を指定する場所です。一方、レコードあたり 1 回実行する SQL 文は [全般] タブで指定します。次の表に、[プリ/ポスト SQL] タブで使用可能なオプションを示します。

オプション 説明

プリ SQL

ステージに入力されるレコードが処理される前に実行する 1 つ以上の SQL Command を入力します。ここで入力する SQL 文は、データフローの実行が開始されてから SQL Command ステージで最初のレコードが処理されるまでの間に、実行あたり 1 回実行されます。

プリ SQL の使用例としては、処理されるレコード用のテーブルを作成することがあります。

プリ SQL の自動コミット

[全般] タブの SQL 文を実行する前にプリ SQL 文をコミットする場合は、このボックスをチェックします。

このボックスをチェックしない場合、プリ SQL 文は [全般] タブの SQL 文と同じトランザクションにコミットされます。

注: [プリ SQL の自動コミット] ボックスも、[ポスト SQL の自動コミット] ボックスもチェックしない場合、ステージの SQL 文はすべて 1 つのトランザクションにコミットされます。
ポスト SQL

すべてのレコードが処理された後に実行する 1 つ以上の SQL 文を入力します。ここで入力する SQL 文は、SQL Command ステージが終了してからデータフローが終了するまでの間に、実行あたり 1 回実行されます。

プリ SQL の使用例としては、レコードを処理した後にインデックスを構築することがあります。

ポスト SQL の自動コミット

[全般] タブの SQL Command がコミットされた後に、ポスト SQL のトランザクションにそのポスト SQL をコミットする場合は、このボックスをチェックします。

このボックスをチェックしない場合、ポスト SQL 文は [全般] タブの SQL 文と同じトランザクションにコミットされます。

注: [プリ SQL の自動コミット] ボックスも、[ポスト SQL の自動コミット] ボックスもチェックしない場合、ステージの SQL 文はすべて 1 つのトランザクションにコミットされます。

[実行時] タブ

[実行時] タブには、[ステージ オプション] が表示され、ステージ オプションのデフォルト値を自由に定義できます。

フィールド名

説明

ステージ オプション
このセクションには、このステージの SQL クエリで使用されるデータフロー オプションの一覧が表示され、そのすべてのオプションに対してデフォルト値を設定できます。[名前] 列にはオプションが表示され、そのデフォルト値を対応する [値] 列に入力できます。
注: ここで設定したデフォルト値は、[データフロー オプション] ダイアログ ボックスの [データフロー オプションをステージにマッピングします] セクションにも表示されます。このダイアログ ボックスでも、デフォルト値を変更できます。[ステージ オプション][データフロー オプション]、および Job Executor で設定されたオプションのデフォルト値が競合する場合の優先順位は、Job Executor で指定された値 > [データフロー オプション] ダイアログ ボックスで定義された値 > [ステージ オプション] で入力された値の順になります。