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