PutDatabaseRecord 2025.10.2.19¶
Bundle¶
org.apache.nifi | nifi-standard-nar
Beschreibung¶
Der PutDatabaseRecord-Prozessor verwendet einen angegebenen RecordReader, um (möglicherweise mehrere) Datensätze aus einer eingehenden Ablaufdatei einzulesen. Diese Datensätze werden in SQL-Anweisungen übersetzt, die als eine einzige Transaktion ausgeführt werden. Wenn ein Fehler auftritt, wird das Flowfile an einen Fehler oder einen erneuten Versuch geroutet, und wenn die Datensätze erfolgreich übertragen wurden, wird das eingehende Flowfile an den Erfolg geroutet. Der Typ der vom Prozessor ausgeführten Anweisung wird über die Eigenschaft „Anweisungstyp“ angegeben, die einige fest codierte Werte wie INSERT, UPDATEund DELETE akzeptiert, sowie ‚Use statement.type Attribute‘, wodurch der Prozessor den Anweisungstyp aus einem Flowfile-Attribut abruft. IMPORTANT: Wenn der Anweisungstyp UPDATE festgelegt ist, dann dürfen die eingehenden Datensätze die Werte der Primärschlüssel (oder der benutzerdefinierten Aktualisierungsschlüssel) nicht ändern. Wenn solche Datensätze gefunden werden, bewirkt die UPDATE-Anweisung, die an die Datenbank ausgegeben wird, entweder nichts (wenn keine vorhandenen Datensätze mit den neuen Primärschlüsselwerten gefunden werden) oder könnte die vorhandenen Daten versehentlich beschädigen (indem Datensätze geändert werden, für die die neuen Werte der Primärschlüssel existieren).
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 |
Datenbanktyp zum Generieren von Anweisungen, die für einen bestimmten Dienst oder Anbieter spezifisch sind. Der generische Typ unterstützt die meisten Fälle, aber die Auswahl eines bestimmten Typs ermöglicht eine optimale Verarbeitung oder zusätzliche Funktionen. |
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 |
Der Name der Datenbank (oder der Name des Katalogs, je nach Zielsystem), welche die Anweisung aktualisieren soll. Dies gilt möglicherweise nicht für die Datenbank, die Sie aktualisieren. Lassen Sie in diesem Fall das Feld leer. Beachten Sie, wenn diese Eigenschaft eingestellt ist und in der Datenbank die Groß-/Kleinschreibung beachtet wird, dass der Katalogname genau mit dem Katalognamen der Datenbank übereinstimmen muss. |
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 |
Gibt den Typ der zu generierenden SQL-Anweisung an. Eine Beschreibung des Verhaltens der einzelnen Operationen finden Sie in der Datenbankdokumentation. Beachten Sie, dass einige Datenbanktypen bestimmte Anweisungstypen möglicherweise nicht unterstützen. Wenn ‚Use statement.type Attribute‘ ausgewählt ist, wird der Wert aus dem Attribut ‚statement.type‘ in das FlowFile übernommen. Die Option ‚Use statement.type Attribute‘ ist die einzige, die den Anweisungstyp ‚SQL‘ zulässt. Wenn ‚SQL‘ angegeben wird, muss der Wert des Feldes, das durch die Eigenschaft ‚Field Containing SQL‘ angegeben ist, eine gültige SQL-Anweisung für die Zieldatenbank sein und wird unverändert ausgeführt. |
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 |
Geben Sie an, wie Fehler behandelt werden sollen. Standardmäßig gilt (false): wenn bei der Verarbeitung eines FlowFile ein Fehler auftritt, wird das FlowFile je nach Fehlertyp zur Beziehung „Fehler“ oder „Wiederholung“ weitergeleitet, und der Prozessor kann mit dem nächsten FlowFile fortfahren. Möglicherweise möchten Sie stattdessen ein Rollback der aktuell verarbeiteten FlowFiles ausführen und die weitere Verarbeitung sofort stoppen. In diesem Fall können Sie die Eigenschaft ‚Rollback On Failure‘ aktivieren. Wenn aktiviert, bleiben fehlgeschlagene FlowFiles ohne Strafe in der Eingabebeziehung und werden wiederholt versucht zu verarbeiten, bis sie erfolgreich verarbeitet oder auf andere Weise entfernt werden. Es ist wichtig, eine angemessene ‚Yield Duration‘ einzustellen, um zu häufige Wiederholungsversuche zu vermeiden. |
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 |