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