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 ステートメントは何もしないか(新しいプライマリキー値を持つ既存の記録が見つからない場合)、または(新しいプライマリキー値が存在する記録を変更して)既存のデータを不注意に破損する可能性があります。
入力要件¶
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 |
処理中にエラーが発生した場合、フローファイルは失敗または再試行にルーティングされ、この属性にエラーの原因が入力されます。 |
ユースケース¶
データベースへの記録挿入 |