PutSQL 2025.5.31.15¶
バンドル¶
org.apache.nifi | nifi-standard-nar
説明¶
SQL UPDATE または INSERT コマンドを実行します。受信 FlowFile の内容は、実行する SQL コマンドであることが期待されます。SQL コマンドでは、パラメーターをエスケープするために「?」を使用する場合があります。この場合、使用するパラメーターは命名規則sql.args.N.typeとsql.args.N.valueを持つ FlowFile 属性として存在しなければなりません。sql.args.N.typeには JDBC Typeを示す数値を指定します。FlowFile の内容は、 UTF-8 形式になる予定です。
入力要件¶
REQUIRED
機密動的プロパティをサポート¶
false
プロパティ¶
プロパティ |
説明 |
---|---|
バッチサイズ |
1回のトランザクションでデータベースに保存する FlowFiles の数。 |
JDBC 接続プール |
JSON メッセージを SQL ステートメントに変換するために使用する JDBC 接続プールを指定します。接続プールは、適切なデータベース列タイプを決定するために必要です。 |
生成キーの取得 |
trueの場合、データベースによって自動的に生成されたキーは、sql.generate.key属性を使用して、それを生成した FlowFile に追加されます。これによりパフォーマンスが若干低下する可能性があり、すべてのデータベースでサポートされているわけではありません。 |
断片化されたトランザクションのサポート |
true の場合、この Processor で FlowFile が消費されると、まずその FlowFile の fragment.identifier 属性と fragment.count 属性をチェックします。fragment.countの値が1より大きい場合、Processorはそのfragment.identifierを持つ FlowFile をすべてが利用可能になるまで処理しません。その時点で、そのfragment.identifierを持つすべての FlowFiles を、 FlowFiles' fragment.index属性で指定された順序で、単一のトランザクションとして処理します。これは、 SQL ステートメントのアトミック性を提供します。このトランザクションのステートメントが実行時に例外をスローすると、このトランザクションはロールバックされます。トランザクションのロールバックが発生すると、これらの FlowFiles は、いずれも「成功」にルーティングされません。<Rollback On Failure> が true にセットされている場合、これらの FlowFiles は入力関係に留まります。<Rollback On Failure> がfalseにセットされている場合、 FlowFiles のどれかが 'retry' にルーティングされると、 FlowFiles のすべてが 'retry' にルーティングされます。この値が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 にセットされている場合、可能であれば、生成されたキーを示すためにこの属性が追加されます。この機能は、すべてのデータベースベンダーがサポートしているわけではありません。 |