PutSQL 2025.10.2.19

Bundle

org.apache.nifi | nifi-standard-nar

Beschreibung

Führt einen SQL UPDATE- oder INSERT-Befehl aus. Es wird erwartet, dass der Inhalt eines eingehenden FlowFile der Wert des SQL-Befehls ist, der ausgeführt werden soll. Der SQL-Befehl kann ein ? verwenden, um Parameter zu ersetzen. In diesem Fall müssen die zu verwendenden Parameter als FlowFile-Attribute mit der Namenskonvention sql.args vorhanden sein. N.type und sql.args. N.value, wobei N eine positive ganze Zahl ist. sql.args. N.type wird als Zahl erwartet, die den JDBC-Typ angibt. Der Inhalt des FlowFile sollte das UTF-8-Format haben.

Tags

database, insert, put, rdbms, relational, sql, update

Eingabeanforderung

REQUIRED

Unterstützt sensible dynamische Eigenschaften

false

Eigenschaften

Eigenschaft

Beschreibung

Batch Size

Die bevorzugte Anzahl von FlowFiles, die in einer einzigen Transaktion in die Datenbank eingegeben werden soll

JDBC Connection Pool

Gibt den JDBC-Verbindungspool an, der verwendet werden soll, um die JSON-Meldung in eine SQL-Anweisung umzuwandeln. Der Verbindungspool ist notwendig, um die entsprechenden Datenbankspaltentypen zu bestimmen.

Obtain Generated Keys

Bei „true“ wird jeder Schlüssel, der automatisch von der Datenbank generiert wird, mithilfe des Attributs „sql.generate.key” zu dem FlowFile hinzugefügt, das ihn generiert hat. Dies kann zu einer etwas langsameren Leistung führen und wird nicht von allen Datenbanken unterstützt.

Support Fragmented Transactions

Bei „true“ gilt, wenn ein FlowFile von diesem Prozessor verwendet wird, überprüft der Prozessor zunächst die Attribute fragment.identifier und fragment.count dieses FlowFile. Wenn der Wert für fragment.count größer als 1 ist, verarbeitet der Prozessor kein FlowFile mit diesem fragment.identifier, bis alle verfügbar sind. Zu diesem Zeitpunkt werden alle FlowFiles mit diesem Fragment.identifier in einer einzigen Transaktion verarbeitet, in der durch die fragment.index-Attribute der FlowFiles angegebenen Reihenfolge. Dies stellt die Atomarität dieser SQL-Anweisungen zur Verfügung. Sobald eine beliebige Anweisung dieser Transaktion bei der Ausführung eine Ausnahme auslöst, wird diese Transaktion zurückgesetzt. Beim Rollback der Transaktion würde keines dieser FlowFiles an „success“ weitergeleitet. Wenn <Rollback On Failure> auf „true“ gesetzt ist, bleibt dieses FlowFiles in der Eingabebeziehung. Wenn <Rollback On Failure> auf „false“ gesetzt ist und eins dieser FlowFiles an „retry“ weitergeleitet wird, werden alle diese FlowFiles an „retry“ weitergeleitet. Andernfalls werden sie an „failure“ weitergeleitet. Wenn dieser Wert „false“ ist, werden diese Attribute ignoriert und die Aktualisierungen erfolgen unabhängig voneinander.

Transaction Timeout

Wenn die Eigenschaft <Support Fragmented Transactions> auf „true“ gesetzt ist, gibt sie an, wie lange gewartet werden soll, bis alle FlowFiles für ein bestimmtes fragment.identifier-Attribut eingetroffen sind, bevor einfach alle FlowFiles mit diesem Bezeichner an die Beziehung „failure“ übertragen werden.

database-session-autocommit

Der Auto-Commit-Modus, der für die verwendete Datenbankverbindung eingestellt werden soll. Bei „false“ werden die Operationen explizit übertragen oder zurückgesetzt (je nach Erfolg Misserfolg). Bei „true“ übernimmt der Treiber/die Datenbank die Übertragung/Rücksetzung.

putsql-sql-statement

Die auszuführende SQL-Anweisung. Die Anweisung kann leer sein, einen konstanten Wert enthalten oder mithilfe der Expression Language aus Attributen gebildet werden. Wenn diese Eigenschaft angegeben ist, wird sie unabhängig vom Inhalt des eingehenden FlowFiles verwendet. Wenn diese Eigenschaft leer ist, wird erwartet, dass der Inhalt des eingehenden FlowFile eine gültige SQL-Anweisung enthält, die vom Prozessor an die Datenbank ausgegeben werden soll.

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 „failure“ oder „retry“ 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.

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

Ein FlowFile wird an diese Beziehung weitergeleitet, nachdem die Datenbank erfolgreich aktualisiert wurde.

Schreibt Attribute

Name

Beschreibung

sql.generated.key

Wenn die Datenbank einen Schlüssel für eine INSERT-Anweisung generiert hat und die Eigenschaft „Obtain Generated Keys“ (Generierte Schlüssel abrufen) auf „true“ gesetzt ist, wird dieses Attribut hinzugefügt, um den generierten Schlüssel anzugeben, falls möglich. Dieses Feature wird nicht von allen Datenbankanbietern unterstützt.