PutDatabaseRecord 2025.10.2.19¶
Bundle¶
org.apache.nifi | nifi-standard-nar
Beschreibung¶
The PutDatabaseRecord processor uses a specified RecordReader to input (possibly multiple) records from an incoming flow file. These records are translated to SQL statements and executed as a single transaction. If any errors occur, the flow file is routed to failure or retry, and if the records are transmitted successfully, the incoming flow file is routed to success. The type of statement executed by the processor is specified via the Statement Type property, which accepts some hard-coded values such as INSERT, UPDATE, and DELETE, as well as ‚Use statement.type Attribute‘, which causes the processor to get the statement type from a flow file attribute. IMPORTANT: If the Statement Type is UPDATE, then the incoming records must not alter the value(s) of the primary keys (or user-specified Update Keys). If such records are encountered, the UPDATE statement issued to the database may do nothing (if no existing records with the new primary key values are found), or could inadvertently corrupt the existing data (by changing records for which the new values of the primary keys exist).
Eingabeanforderung¶
REQUIRED
Unterstützt sensible dynamische Eigenschaften¶
false
Eigenschaften¶
Eigenschaft |
Beschreibung |
|---|---|
Column Name Translation Pattern |
Der Spaltenname wird mit diesem regulären Ausdruck normalisiert. |
Column Name Translation Strategy |
Die Strategie, die zur Normalisierung der Tabellenspaltennamen verwendet wird. Der Spaltenname wird automatisch in Großbuchstaben konvertiert, damit der Abgleich ohne Berücksichtigung der Groß- und Kleinschreibung funktioniert – unabhängig von der Strategie. |
Data Record Path |
Wenn angegeben, bezeichnet diese Eigenschaft einen RecordPath, der für jeden eingehenden Datensatz ausgewertet wird. Der aus der Auswertung des RecordPath resultierende Datensatz wird anstelle des gesamten eingehenden Datensatzes an die Datenbank gesendet. Wenn nicht angegeben, wird der gesamte eingehende Datensatz in der Datenbank veröffentlicht. |
Database Dialect Service |
Database Dialect Service zur Generierung von Anweisungen, die auf einen bestimmten Dienst oder Anbieter zugeschnitten sind. |
Delete Keys |
Eine durch Kommas getrennte Liste von Spaltennamen, die eine Zeile in der Datenbank für DELETE-Anweisungen eindeutig identifiziert. Wenn der Anweisungstyp DELETE ist und diese Eigenschaft nicht festgelegt ist, werden die Spalten der Tabelle verwendet. Diese Eigenschaft wird ignoriert, wenn der Anweisungstyp nicht DELETE ist |
Statement Type Record Path |
Gibt einen RecordPath an, der für jeden Datensatz ausgewertet wird, um den Anweisungstyp zu bestimmen. Der RecordPath sollte entweder INSERT, UPDATE, UPSERT oder DELETE entsprechen. (Debezium-ähnliche Operationstypen werden ebenfalls unterstützt: „r“ und „c“ für INSERT, „u“ für UPDATE, und „d“ für DELETE) |
database-session-autocommit |
Der Auto-Commit-Modus, der für die verwendete Datenbankverbindung eingestellt werden soll. Bei „false“ werden die Operationen explizit bestätigt oder zurückgenommen (je nach Erfolg oder Fehler). Wenn diese Einstellung auf „true“ gesetzt ist, führt der Treiber/die Datenbank das Commit/Rollback automatisch durch. |
db-type |
Database Type for generating statements specific to a particular service or vendor. The Generic Type supports most cases but selecting a specific type enables optimal processing or additional features. |
put-db-record-allow-multiple-statements |
Wenn der Anweisungstyp „SQL“ ist (wie im Attribut statement.type festgelegt), gibt dieses Feld an, ob der Feldwert durch ein Semikolon getrennt und jede Anweisung separat ausgeführt werden soll. Wenn eine Anweisung einen Fehler verursacht, wird der gesamte Satz von Anweisungen zurückgesetzt. Wenn der Anweisungstyp nicht „SQL“ ist, wird dieses Feld ignoriert. |
put-db-record-binary-format |
Das Format, das bei der Decodierung von Zeichfolgenwerten in das Binärformat angewendet werden soll. |
put-db-record-catalog-name |
The name of the database (or the name of the catalog, depending on the destination system) that the statement should update. This may not apply for the database that you are updating. In this case, leave the field empty. Note that if the property is set and the database is case-sensitive, the catalog name must match the database’s catalog name exactly. |
put-db-record-dcbp-service |
Der Controller Service, der verwendet wird, um eine Verbindung zur Datenbank zum Senden von Datensätzen herzustellen. |
put-db-record-field-containing-sql |
Wenn der Anweisungstyp „SQL“ ist (wie im Attribut statement.type festgelegt), gibt dieses Feld an, welches Feld in dem/den Datensatz(en) die auszuführende SQL-Anweisung enthält. Der Wert des Feldes muss eine einzelne SQL-Anweisung sein. Wenn der Anweisungstyp nicht „SQL“ ist, wird dieses Feld ignoriert. |
put-db-record-max-batch-size |
Gibt die maximale Anzahl von SQL-Anweisungen an, die in jedem an die Datenbank gesendeten Batch enthalten sein sollen. Null bedeutet, dass die Batchgröße nicht begrenzt ist und alle Anweisungen in einen einzigen Batch eingefügt werden, was bei einer sehr großen Anzahl von Anweisungen zu Problemen mit hohem Speicherverbrauch führen kann. |
put-db-record-query-timeout |
Die maximal erlaubte Zeit für eine laufende SQL-Anweisung. Null bedeutet, dass es kein Limit gibt. Eine maximale Zeit von weniger als 1 Sekunde entspricht Null. |
put-db-record-quoted-identifiers |
Wenn Sie diese Option aktivieren, werden alle Spaltennamen in Anführungszeichen gesetzt, sodass Sie reservierte Wörter als Spaltennamen in Ihren Tabellen verwenden können. |
put-db-record-quoted-table-identifiers |
Wenn Sie diese Option aktivieren, wird der Tabellenname in Anführungszeichen gesetzt, um die Verwendung von Sonderzeichen im Tabellennamen zu unterstützen. |
put-db-record-record-reader |
Gibt den Controller Service an, der für das Parsen eingehender Daten und die Bestimmung des Datenschemas verwendet werden soll. |
put-db-record-schema-name |
Der Name des Schemas, zu dem die Tabelle gehört. Dies gilt möglicherweise nicht für die Datenbank, die Sie aktualisieren. In diesem Fall lassen Sie das Feld leer. Beachten Sie, dass der Schemaname genau mit dem Schemanamen der Datenbank übereinstimmen muss, wenn die Eigenschaft gesetzt ist und die Datenbank Groß- und Kleinschreibung beachtet. |
put-db-record-statement-type |
Specifies the type of SQL Statement to generate. Please refer to the database documentation for a description of the behavior of each operation. Please note that some Database Types may not support certain Statement Types. If ‚Use statement.type Attribute‘ is chosen, then the value is taken from the statement.type attribute in the FlowFile. The ‚Use statement.type Attribute‘ option is the only one that allows the ‚SQL’statement type. If ‚SQL‘ is specified, the value of the field specified by the ‚Field Containing SQL‘ property is expected to be a valid SQL statement on the target database, and will be executed as-is. |
put-db-record-table-name |
Der Name der Tabelle, auf die sich die Anweisung auswirken soll. Beachten Sie, dass der Tabellenname genau mit dem Tabellennamen der Datenbank übereinstimmen muss, wenn die Datenbank Groß- und Kleinschreibung unterscheidet. |
put-db-record-translate-field-names |
Bei „true“ versucht der Prozessor, die Feldnamen in die entsprechenden Spaltennamen für die angegebene Tabelle zu übersetzen. Bei „false“ müssen die Feldnamen genau mit den Spaltennamen übereinstimmen, sonst wird die Spalte nicht aktualisiert |
put-db-record-unmatched-column-behavior |
Wenn ein eingehender Datensatz nicht über eine Feldzuordnung für alle Spalten der Datenbanktabelle verfügt, legt diese Eigenschaft fest, wie in diesem Fall vorgegangen werden soll. |
put-db-record-unmatched-field-behavior |
Wenn ein eingehender Datensatz ein Feld enthält, das keiner Spalte der Datenbanktabelle zugeordnet werden kann, gibt diese Eigenschaft an, wie die Situation zu behandeln ist |
put-db-record-update-keys |
Eine durch Kommas getrennte Liste von Spaltennamen, die eine Zeile in der Datenbank für UPDATE-Anweisungen eindeutig identifiziert. Wenn der Anweisungstyp UPDATE ist und diese Eigenschaft nicht festgelegt ist, werden die Primärschlüssel der Tabelle verwendet. Wenn in diesem Fall kein Primärschlüssel existiert, schlägt die Konvertierung in SQL fehl, wenn „Unmatched Column Behaviour“ auf FAIL eingestellt ist. Diese Eigenschaft wird ignoriert, wenn der Anweisungstyp INSERT ist. |
rollback-on-failure |
Specify how to handle error. By default (false), if an error occurs while processing a FlowFile, the FlowFile will be routed to ‚failure‘ or ‚retry‘ relationship based on error type, and processor can continue with next FlowFile. Instead, you may want to rollback currently processed FlowFiles and stop further processing immediately. In that case, you can do so by enabling this ‚Rollback On Failure‘ property. If enabled, failed FlowFiles will stay in the input relationship without penalizing it and being processed repeatedly until it gets processed successfully or removed by other means. It is important to set adequate ‚Yield Duration‘ to avoid retrying too frequently. |
table-schema-cache-size |
Legt fest, wie viele Tabellenschemas zwischengespeichert werden sollen |
Beziehungen¶
Name |
Beschreibung |
|---|---|
failure |
Ein FlowFile wird an diese Beziehung weitergeleitet, wenn die Datenbank nicht aktualisiert werden kann und ein erneuter Versuch der Operation ebenfalls fehlschlägt, z. B. bei einer ungültigen Abfrage oder einer Verletzung der Integritätseinschränkung. |
retry |
Ein FlowFile wird an diese Beziehung weitergeleitet, wenn die Datenbank nicht aktualisiert werden kann, die Operation aber bei einem erneuten Versuch erfolgreich sein kann. |
success |
FlowFile aus dem SQL-Abfrage Resultset erfolgreich erstellt. |
Schreibt Attribute¶
Name |
Beschreibung |
|---|---|
putdatabaserecord.error |
Wenn bei der Verarbeitung ein Fehler auftritt, wird das FlowFile an failure oder retry weitergeleiteit, und dieses Attribut wird mit der Fehlerursache gefüllt. |
Anwendungsfälle¶
Datensätze in eine Datenbank einfügen |