PutDatabaseRecord 2025.5.31.15

Bundle

org.apache.nifi | nifi-standard-nar

Beschreibung

Der PutDatabaseRecord-Prozesser verwendet einen angegebenen RecordReader, um (möglicherweise mehrere) Datensätze aus einem eingehenden FlowFile einzugeben. Diese Datensätze werden in SQL-Anweisungen übersetzt und als eine einzige Transaktion ausgeführt. Treten Fehler auf, wird das FlowFile an failure oder retry weitergeleitet. Wenn die Datensätze erfolgreich übertragen wurden, wird die eingehende Flow-Datei auf Erfolg geroutet. Der vom Prozessor ausgeführte Anweisungstyp wird über die Eigenschaft „Statement Type“ festgelegt, die einige fest codierte Werte wie INSERT, UPDATE und DELETE sowie „Use statement.type Attribute“ (Anweisungstyp verwenden) akzeptiert, wodurch der Prozessor den Anweisungstyp aus einem Flow-Dateiattribut abruft. IMPORTANT: Wenn der Statement Type UPDATE ist, dürfen die eingehenden Datensätze den Wert/die Werte der Primärschlüssel (oder der vom Benutzer angegebenen Update Keys) nicht ändern. Wenn solche Datensätze gefunden werden, führt die an die Datenbank gesendete Anweisung UPDATE möglicherweise keine Aktion aus (wenn keine Datensätze mit den neuen Primärschlüsselwerten gefunden werden) oder kann versehentlich die vorhandenen Daten beschädigen (durch Ändern von Datensätzen, für die die neuen Werte der Primärschlüssel vorhanden sind).

Tags

database, delete, insert, jdbc, put, record, sql, update

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 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

Der Name des Katalogs, den die Anweisung aktualisieren soll. Dies gilt möglicherweise nicht für die Datenbank, die Sie aktualisieren. In diesem Fall lassen Sie das Feld leer. Beachten Sie, dass der Katalogname genau mit dem Katalognamen der Datenbank übereinstimmen muss, wenn die Eigenschaft gesetzt ist und die Datenbank Groß- und Kleinschreibung beachtet.

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 die Art der zu erstellenden SQL-Anweisung an. Eine Beschreibung des Verhaltens der einzelnen Operationen finden Sie in der Datenbankdokumentation. Bitte beachten Sie, dass einige Datenbanktypen bestimmte Anweisungstypen möglicherweise nicht unterstützen. Wenn Sie „Use statement.type Attribute“ wählen, wird der Wert aus dem Attribut statement.type im FlowFile übernommen. Die Option „Use statement.type Attribute“ ist die einzige, die den „SQL“-Anweisungstyp zulässt. Wenn „SQL“ angegeben ist, wird erwartet, dass der Wert des Feldes, das durch die Eigenschaft „Field Containing SQL“ angegeben ist, eine gültige SQL-Anweisung in der Zieldatenbank ist, und er wird so ausgeführt, wie er ist.

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

Legen Sie fest, wie Fehler behandelt werden sollen. Wenn bei der Verarbeitung eines FlowFile ein Fehler auftritt, wird das FlowFile je nach Fehlertyp in die Beziehung „failure“- oder „retry“ weitergeleitet, und der Prozessor kann mit dem nächsten FlowFile fortfahren. Stattdessen möchten Sie vielleicht ein Rollback der aktuell verarbeiteten FlowFiles durchführen und die weitere Verarbeitung sofort stoppen. In diesem Fall können Sie dies tun, indem Sie diese Eigenschaft „Rollback On Failure“ aktivieren. Wenn diese Option aktiviert ist, verbleiben FlowFiles in der Beziehung „input“, ohne zurückgestellt zu werden, und werden wiederholt verarbeitet, bis sie erfolgreich verarbeitet oder auf andere Weise entfernt werden. Es ist wichtig, eine angemessene „Yield Duration“ festzulegen, 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