PutDatabaseRecord 2025.10.2.19

バンドル

org.apache.nifi | nifi-standard-nar

説明

PutDatabaseRecordプロセッサーは、指定されたRecordReaderを使用して、入力されるフローファイルから(おそらく複数の)記録を入力します。これらの記録はSQLステートメントに変換され、単一のトランザクションとして実行されます。エラーが発生した場合、フローファイルは失敗または再試行にルーティングされ、レコードが正常に送信された場合、受信フローファイルは成功にルーティングされます。このプロパティには、INSERT、UPDATE、DELETEなどのハードコードされた値や、「Use statement.type Attribute」(ステートメントタイプをフローファイルの属性から取得する)を指定できます。IMPORTANT:ステートメントタイプがUPDATEの場合、受信記録は主キー(またはユーザー指定の更新キー)の値を変更してはなりません。このような記録が存在する場合、データベースに発行されるUPDATEステートメントは、(新しい主キー値を持つ既存のレコードが見つからない場合)何もしないかもしれないし、(主キーの新しい値が存在するレコードを変更することによって)既存のデータを不注意に破損するかもしれません。

タグ

データベース、削除、挿入、jdbc、プット、記録、SQL、更新

入力要件

REQUIRED

機密動的プロパティをサポート

false

プロパティ

プロパティ

説明

列名変換パターン

列名はこの正規表現で正規化されます。

列名 翻訳ストラテジー

テーブルの列名を正規化するために使用されるストラテジー。大文字と小文字を区別しないマッチングを行うため、ストラテジーに関係なく列名は大文字になります。

データ記録パス

指定された場合、このプロパティは、各入力記録に対して評価される RecordPath を示し、 RecordPath を評価した結果の記録は、全入力記録を送信する代わりにデータベースに送信されます。指定しない場合、受信記録全体がデータベースに公開されます。

データベース方言サービス

特定のサービスやベンダーに特化したステートメントを生成するためのデータベース方言サービス。

キー削除

DELETE ステートメントで使用する、データベース内の行を一意に識別する列名のカンマ区切りリスト。ステートメント・タイプが DELETE で、このプロパティがセットされていない場合は、テーブルの列が使用されます。このプロパティは、ステートメントタイプが DELETE でない場合、無視されます。

ステートメントタイプ 記録パス

ステートメントタイプを決定するために、各記録に対して評価する RecordPath を指定します。RecordPath は、 INSERT、 UPDATE、 UPSERT、 DELETE のいずれかに相当します。(Debeziumスタイルの演算子タイプもサポートされています。INSERT 用の「r」と「c」、 UPDATE 用の「u」、 DELETE 用の「d」)

database-session-autocommit

使用するデータベース接続にセットする自動コミットモード。false をセットすると、演算子は明示的にコミットまたはロールバックされます (それぞれ成功または失敗に基づいて)。trueにセットすると、ドライバー/データベースは自動的にコミット/ロールバックを処理します。

db-type

特定のサービスやベンダーに特化したステートメントを生成するためのデータベース型。汎用タイプはほとんどのケースをサポートしますが、特定のタイプを選択することで、最適な処理や追加機能が有効になります。

put-db-record-allow-multiple-statements

ステートメント・タイプが 'SQL' (statement.type属性でセット)の場合、このフィールドはフィールド値をセミコロンで分割し、各ステートメントを個別に実行するかどうかを示します。ステートメントがエラーを起こした場合、ステートメントのセット全体がロールバックされます。ステートメント・タイプが 'SQL' でない場合、このフィールドは無視されます。

put-db-record-binary-format

文字列値をバイナリにデコードする際に適用する形式。

put-db-record-catalog-name

ステートメントが更新するデータベース名(宛先システムによってはカタログ名)。これは、更新しようとしているデータベースには当てはまらないかもしれません。その場合、フィールドは空のままにしてください。このプロパティが設定され、データベースの大文字と小文字が区別される場合、カタログ名はデータベースのカタログ名と正確に一致しなければならないことに注意してください。

put-db-record-dcbp-service

記録を送信するためのデータベースへの接続を取得するために使用されるController Service。

put-db-record-field-containing-sql

ステートメント・タイプが 'SQL' (statement.type属性でセット) の場合、このフィールドは記録のどのフィールドに実行する SQL ステートメントが含まれているかを示します。フィールドの値は、単一の SQL ステートメントでなければなりません。ステートメント・タイプが 'SQL' でない場合、このフィールドは無視されます。

put-db-record-max-batch-size

データベースに送信する各バッチに含めるステートメントの最大数を指定します。ゼロはバッチサイズが制限されていないことを意味し、すべてのステートメントが1つのバッチに入れられるため、非常に多くのステートメントでメモリ使用量の問題が発生する可能性があります。

put-db-record-query-timeout

実行中の SQL ステートメントに許される最大時間。ゼロは制限がないことを意味します。1秒未満の最大時間はゼロに等しくなります。

put-db-record-quoted-identifiers

このオプションを有効にすると、すべての列名が引用符で囲まれるようになり、予約語をテーブルの列名として使用できるようになります。

put-db-record-quoted-table-identifiers

このオプションを有効にすると、テーブル名が引用符で囲まれ、テーブル名での特殊文字の使用に対応します。

put-db-record-record-reader

受信データのパースやデータのスキーマの決定に使用する Controller Service を指定します。

put-db-record-schema-name

テーブルが属するスキーマの名前。更新対象のデータベースには適用されない場合があります。この場合、フィールドは空欄のままにしてください。このプロパティがセットされていてデータベースが大文字と小文字を区別する場合、スキーマ名はデータベースのスキーマ名と正確に一致しなければならないことに注意してください。

put-db-record-statement-type

生成するSQLステートメントのタイプを指定します。各操作の動作については、データベースのドキュメントを参照してください。データベースタイプによっては、特定のステートメントタイプをサポートしていない場合があることに注意してください。「Use statement.type Attribute」を選択した場合、値はFlowFileのstatement.typeアトリビュートから取得されます。「Use statement.type Attribute」オプションは、「SQL」ステートメントタイプを使用できる唯一のオプションです。「SQL」が指定された場合、「Field Containing SQL」プロパティで指定されたフィールドの値は、ターゲットデータベース上で有効なSQLステートメントであることが期待され、そのまま実行されます。

put-db-record-table-name

ステートメントが影響するテーブルの名前。データベースが大文字と小文字を区別する場合、テーブル名はデータベースのテーブル名と正確に一致しなければならないことに注意してください。

put-db-record-translate-field-names

true の場合、プロセッサーはフィールド名を指定されたテーブルの適切な列名に変換しようとします。falseの場合、フィールド名は列名と完全に一致しなければなりません。

put-db-record-unmatched-column-behavior

受信レコードがデータベーステーブルのすべての列のフィールドマッピングを持っていない場合、このプロパティはその状況を処理する方法を指定します。

put-db-record-unmatched-field-behavior

受信レコードがデータベーステーブルの列のいずれにもマッピングされないフィールドを持つ場合、このプロパティはその状況をどのように処理するかを指定します。

put-db-record-update-keys

UPDATE ステートメントで使用する、データベース内の行を一意に識別する列名のカンマ区切りリスト。ステートメント・タイプが UPDATE で、このプロパティがセットされていない場合は、テーブルの主キーが使用されます。この大文字と小文字が存在しない場合、Unmatched Column Behaviour が FAIL にセットされていると、 SQL への変換は失敗します。このプロパティは、ステートメントタイプが INSERT である場合、無視されます。

rollback-on-failure

エラーの処理方法を指定します。デフォルト(false)では、FlowFileの処理中にエラーが発生した場合、FlowFileはエラーの種類に基づいて「失敗」または「再試行」リレーションシップにルーティングされ、プロセッサーは次のFlowFileに進むことができます。その代わりに、現在処理中のFlowFilesをロールバックし、それ以降の処理を即座に停止したい場合があるかもしれません。その場合は、この「Rollback On Failure」プロパティを有効にしてください。有効な場合、失敗したFlowFilesはペナルティを受けることなく入力リレーションシップに留まり、処理に成功するか他の手段で削除されるまで繰り返し処理されます。リトライの頻度が高くなりすぎないよう、適切な「Yield Duration」を設定することが重要です。

table-schema-cache-size

テーブルスキーマのキャッシュ数の指定

リレーションシップ

名前

説明

failure

FlowFile は、データベースを更新できず、無効なクエリや整合性制約違反など、操作を再試行しても失敗する場合は、このリレーションシップにルーティングされます。

retry

データベースを更新できない場合、 FlowFile はこのリレーションシップにルーティングされますが、再度操作を試みると成功する可能性があります。

success

SQL クエリ結果セットから FlowFile の作成に成功しました。

属性の書き込み

名前

説明

putdatabaserecord.error

処理中にエラーが発生した場合、フローファイルは失敗または再試行にルーティングされ、この属性にエラーの原因が入力されます。

ユースケース

データベースへの記録挿入