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