PutSQL 2025.5.31.15

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 auszuführende SQL-Befehl ist. Der SQL-Befehl kann das Zeichen ? zum Escapen von Parametern verwenden. In diesem Fall müssen die zu verwendenden Parameter als FlowFile-Attribute mit der Namenskonvention „sql.args.N.type“ und „sql.args.N.value“ existieren, wobei N eine positive Ganzzahl ist. Es wird erwartet, dass „sql.args.N.type“ eine Zahl ist, die den JDBC-Typ angibt. Es wird erwartet, dass der Inhalt des FlowFile im UTF-8-Format vorliegt.

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“ prüft der Prozessor, wenn ein FlowFile von diesem Prozessor konsumiert wird, zuerst die Attribute fragment.identifier und fragment.count dieses FlowFile. Wenn der Wert fragment.count größer als 1 ist, verarbeitet der Prozessor kein FlowFile mit diesem fragment.identifier, bis alle verfügbar sind. Anschließend verarbeitet er alle FlowFiles mit diesem fragment.identifier als eine einzige Transaktion in der Reihenfolge, die durch die Attribute fragment.index der FlowFiles festgelegt ist. Dies sorgt für die Atomarität dieser SQL-Anweisungen. Sobald eine Anweisung dieser Transaktion bei der Ausführung eine Ausnahme auslöst, wird diese Transaktion zurückgesetzt. Bei einem Rollback der Transaktion würde keine dieser FlowFiles an die Beziehung „success“ weitergeleitet werden. Wenn die Option <Rollback On Failure> auf „true“ gesetzt ist, bleiben diese FlowFiles in der Beziehung „input“. Wenn <Rollback On Failure> auf „false“ gesetzt ist, werden alle FlowFiles an die Beziehung „retry“ weitergeleitet, wenn eines dieser FlowFiles an „retry“ weitergeleitet wird. 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

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.

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.