PutSQL 2025.10.2.19¶
バンドル¶
org.apache.nifi | nifi-standard-nar
説明¶
SQL UPDATEまたはINSERTコマンドを実行します。受信FlowFileの内容は、実行するSQLコマンドであることが期待されます。SQLコマンドは、パラメーターをエスケープするために「?」を使用することができます。この場合、使用するパラメーターは、sql.argsという命名規則を持つ FlowFile 属性として存在しなければなりません。N.typeとsql.args。N.value、Nは正の整数です。sql.args.N.typeは、JDBC Typeを示す数値が期待されます。FlowFileの内容はUTF-8形式であることが期待されます。
入力要件¶
REQUIRED
機密動的プロパティをサポート¶
false
プロパティ¶
プロパティ |
説明 |
|---|---|
バッチサイズ |
1回のトランザクションでデータベースに保存する FlowFiles の数。 |
JDBC 接続プール |
JSON メッセージを SQL ステートメントに変換するために使用する JDBC 接続プールを指定します。接続プールは、適切なデータベース列タイプを決定するために必要です。 |
生成キーの取得 |
trueの場合、データベースによって自動的に生成されたキーは、sql.generate.key属性を使用して、それを生成した FlowFile に追加されます。これによりパフォーマンスが若干低下する可能性があり、すべてのデータベースでサポートされているわけではありません。 |
断片化されたトランザクションのサポート |
trueの場合、FlowFileがこのプロセッサーで消費されるとき、プロセッサーはまずそのFlowFileの fragment.identifier属性とfragment.count属性をチェックします。fragment.countの値が1より大きい場合、プロセッサーは、そのfragment.identifierを持つFlowFileを、すべてが利用可能になるまで処理しません。その時点で、そのfragment.identifierを持つすべてのFlowFilesを、FlowFilesの「fragment.index」属性で指定された順序で、単一のトランザクションとして処理します。これにより、これらのSQLステートメントの原子性が提供されます。このトランザクションのいずれかのステートメントが実行時に例外をスローすると、このトランザクションはロールバックされます。トランザクションのロールバックが起こると、これらのFlowFilesのどれもが「success」にルーティングされません。<Rollback On Failure>がtrueに設定されている場合、これらのFlowFilesは入力リレーションシップに留まります。<Rollback On Failure>がfalseに設定されている場合、これらのFlowFilesのいずれかが「retry」にルーティングされると、これらのFlowFilesのすべてが「retry」にルーティングされます。そうでなければ、これらは「failure」にルーティングされます。この値がfalseの場合、これらの属性は無視され、更新は互いに独立して行われます。 |
トランザクションタイムアウト |
<Support Fragmented Transactions> プロパティがtrueにセットされている場合、特定のfragment.identifier属性のすべての FlowFiles は、その識別子を持つすべての FlowFiles を 'failure' 関係に転送する前に到着するまでの待ち時間を指定します。 |
database-session-autocommit |
使用するデータベース接続にセットする自動コミットモード。false にセットすると、操作は明示的にコミットまたはロールバックされます (それぞれ成功または失敗に基づいて)。trueにセットすると、ドライバー/データベースがコミット/ロールバックを操作します。 |
putsql-sql-statement |
実行する SQL ステートメント。ステートメントは空でも、定数値でも、式言語を使って属性から構築することもできます。このプロパティが指定された場合、受信 FlowFiles の内容に関係なく使用されます。このプロパティが空の場合、受信する FlowFile のコンテナーには有効な SQL ステートメントが含まれ、プロセッサーからデータベースに対して発行されることが期待されます。 |
rollback-on-failure |
エラーの処理方法を指定します。デフォルト(false)では、FlowFileの処理中にエラーが発生した場合、FlowFileはエラーの種類に基づいて「失敗」または「再試行」リレーションシップにルーティングされ、プロセッサーは次のFlowFileに進むことができます。その代わりに、現在処理中のFlowFilesをロールバックし、それ以降の処理を即座に停止したい場合があるかもしれません。その場合は、この「Rollback On Failure」プロパティを有効にしてください。有効な場合、失敗したFlowFilesはペナルティを受けることなく入力リレーションシップに留まり、処理に成功するか他の手段で削除されるまで繰り返し処理されます。リトライの頻度が高くなりすぎないよう、適切な「Yield Duration」を設定することが重要です。 |
リレーションシップ¶
名前 |
説明 |
|---|---|
failure |
FlowFile は、データベースを更新できず、無効なクエリや整合性制約違反など、操作を再試行しても失敗する場合は、このリレーションシップにルーティングされます。 |
retry |
データベースを更新できない場合、 FlowFile はこのリレーションシップにルーティングされますが、再度操作を試みると成功する可能性があります。 |
success |
データベースが正常に更新されると、このリレーションシップに FlowFile がルーティングされます。 |
属性の書き込み¶
名前 |
説明 |
|---|---|
sql.generated.key |
データベースが INSERT ステートメントのキーを生成し、Obtain Generated Keys プロパティが true にセットされている場合、可能であれば、生成されたキーを示すためにこの属性が追加されます。この機能は、すべてのデータベースベンダーがサポートしているわけではありません。 |