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