PutDatabaseRecord 2025.5.31.15

バンドル

org.apache.nifi | nifi-standard-nar

説明

PutDatabaseRecord プロセッサーは、指定された RecordReader を使用して、入力されるフローファイルから(場合によっては複数の)記録を入力します。これらの記録は SQL ステートメントに変換され、1つのトランザクションとして実行されます。エラーが発生した場合、フローファイルは失敗または再試行にルーティングされ、記録が正常に送信された場合、受信フローファイルは成功にルーティングされます。プロセッサーに処理されたステートメントのタイプは、Statement Type プロパティで指定されます。このプロパティには、 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ステートメント.type属性'を選択した場合、値は FlowFile のステートメント.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

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

ユースケース

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