PutDatabaseRecord 2025.10.2.19¶
Bundle¶
org.apache.nifi | nifi-standard-nar
Description¶
The PutDatabaseRecord processor uses a specified RecordReader to input (possibly multiple) records from an incoming flow file. These records are translated to SQL statements and executed as a single transaction. If any errors occur, the flow file is routed to failure or retry, and if the records are transmitted successfully, the incoming flow file is routed to success. The type of statement executed by the processor is specified via the Statement Type property, which accepts some hard-coded values such as INSERT, UPDATE, and DELETE, as well as “Use statement.type Attribute”, which causes the processor to get the statement type from a flow file attribute. IMPORTANT: If the Statement Type is UPDATE, then the incoming records must not alter the value(s) of the primary keys (or user-specified Update Keys). If such records are encountered, the UPDATE statement issued to the database may do nothing (if no existing records with the new primary key values are found), or could inadvertently corrupt the existing data (by changing records for which the new values of the primary keys exist).
Exigences en matière d’entrées¶
REQUIRED
Prend en charge les propriétés dynamiques sensibles¶
false
Propriétés¶
Propriété |
Description |
|---|---|
Column Name Translation Pattern |
Le nom de la colonne sera normalisé à l’aide de l’expression régulière suivante |
Column Name Translation Strategy |
La stratégie utilisée pour normaliser le nom des colonnes de la table. Le nom de la colonne sera mis en majuscules afin d’assurer une correspondance insensible à la casse, quelle que soit la stratégie |
Data Record Path |
Si elle est spécifiée, cette propriété désigne un RecordPath qui sera évalué pour chaque enregistrement entrant et l’enregistrement résultant de l’évaluation du RecordPath sera envoyé à la base de données au lieu d’envoyer l’intégralité de l’enregistrement entrant. Si elle n’est pas spécifiée, l’intégralité de l’enregistrement entrant sera publiée dans la base de données. |
Database Dialect Service |
Le composant Database Dialect Service permettant de générer des instructions spécifiques pour un service ou un fournisseur particulier. |
Delete Keys |
Une liste de noms de colonnes séparés par des virgules qui identifie de manière unique une ligne dans la base de données pour les instructions DELETE. Si le type d’instruction est DELETE et que cette propriété n’est pas définie, les colonnes du tableau sont utilisées. Cette propriété est ignorée si le type d’instruction n’est pas DELETE |
Statement Type Record Path |
Spécifie un RecordPath à évaluer pour chaque enregistrement afin de déterminer le type d’instruction. Le RecordPath doit correspondre à INSERT, UPDATE, UPSERT ou DELETE. (Les types d’opérations de type Debezium sont également pris en charge : « r » et « c » pour INSERT, « u » pour UPDATE, et « d » pour DELETE) |
database-session-autocommit |
Le mode de validation automatique à définir sur la connexion à la base de données utilisée. Si le mode est défini sur faux, l’opération sera explicitement validée ou annulée (en cas de succès ou d’échec). Si le mode est défini sur vrai, le pilote/la base de données gère automatiquement la validation/l’annulation. |
db-type |
Database Type for generating statements specific to a particular service or vendor. The Generic Type supports most cases but selecting a specific type enables optimal processing or additional features. |
put-db-record-allow-multiple-statements |
Si le type d’instruction est “SQL” (tel qu’il est défini dans l’attribut statement.type), ce champ indique s’il faut fractionner la valeur du champ par un point-virgule et exécuter chaque instruction séparément. Si une instruction provoque une erreur, l’ensemble des instructions sera annulé. Si le type d’instruction n’est pas “SQL”, ce champ est ignoré. |
put-db-record-binary-format |
Le format à appliquer lors du décodage des valeurs de chaînes en binaire. |
put-db-record-catalog-name |
The name of the database (or the name of the catalog, depending on the destination system) that the statement should update. This may not apply for the database that you are updating. In this case, leave the field empty. Note that if the property is set and the database is case-sensitive, the catalog name must match the database’s catalog name exactly. |
put-db-record-dcbp-service |
Le Controller Service qui est utilisé pour obtenir une connexion à la base de données pour l’envoi d’enregistrements. |
put-db-record-field-containing-sql |
Si le type d’instruction est “SQL” (défini dans l’attribut statement.type), ce champ indique le champ de l’enregistrement ou des enregistrements contenant l’instruction SQL à exécuter. La valeur du champ doit être une instruction unique SQL. Si le type d’instruction n’est pas “SQL”, ce champ est ignoré. |
put-db-record-max-batch-size |
Spécifie le nombre maximum d’instructions SQL à inclure dans chaque lot envoyé à la base de données. Zéro signifie que la taille du lot n’est pas limitée et que toutes les instructions sont regroupées en un seul lot, ce qui peut entraîner des problèmes d’utilisation de la mémoire pour un très grand nombre d’instructions. |
put-db-record-query-timeout |
La durée maximale autorisée pour une instruction en cours d’exécution sur SQL, zéro signifiant qu’il n’y a pas de limite. Le temps maximum inférieur à 1 seconde sera égal à zéro. |
put-db-record-quoted-identifiers |
En activant cette option, tous les noms de colonnes seront mis entre guillemets, ce qui vous permettra d’utiliser des mots réservés comme noms de colonnes dans vos tables. |
put-db-record-quoted-table-identifiers |
En activant cette option, le nom de la table sera mis entre guillemets pour permettre l’utilisation de caractères spéciaux dans le nom de la table. |
put-db-record-record-reader |
Spécifie le Controller Service à utiliser pour analyser les données entrantes et déterminer le schéma des données. |
put-db-record-schema-name |
Le nom du schéma auquel la table appartient. Cela peut ne pas s’appliquer à la base de données que vous mettez à jour. Dans ce cas, laissez le champ vide. Notez que si la propriété est définie et que la base de données est sensible à la casse, le nom du schéma doit correspondre exactement au nom du schéma de la base de données. |
put-db-record-statement-type |
Specifies the type of SQL Statement to generate. Please refer to the database documentation for a description of the behavior of each operation. Please note that some Database Types may not support certain Statement Types. If “Use statement.type Attribute” is chosen, then the value is taken from the statement.type attribute in the FlowFile. The “Use statement.type Attribute” option is the only one that allows the “SQL’statement type. If “SQL” is specified, the value of the field specified by the “Field Containing SQL” property is expected to be a valid SQL statement on the target database, and will be executed as-is. |
put-db-record-table-name |
Le nom de la table sur laquelle l’instruction doit porter. Notez que si la base de données est sensible à la casse, le nom de la table doit correspondre exactement au nom de la table de la base de données. |
put-db-record-translate-field-names |
Si c’est le cas, le processeur tentera de traduire les noms de champ en noms de colonne appropriés pour la table spécifiée. Si false, les noms des champs doivent correspondre exactement aux noms des colonnes, sinon la colonne ne sera pas mise à jour |
put-db-record-unmatched-column-behavior |
Si un enregistrement entrant n’a pas de mappage de champ pour toutes les colonnes de la table de base de données, cette propriété spécifie comment gérer la situation |
put-db-record-unmatched-field-behavior |
Si un enregistrement entrant comporte un champ qui ne mappe aucune des colonnes de la table de base de données, cette propriété indique comment gérer la situation |
put-db-record-update-keys |
Une liste de noms de colonnes séparés par des virgules qui identifie de manière unique une ligne dans la base de données pour les instructions UPDATE. Si le Type d’instruction est UPDATE et que cette propriété n’est pas définie, les clés primaires de la table sont utilisées. Dans ce cas, s’il n’existe pas de clé primaire, la conversion vers SQL échouera si l’option Unmatched Column Behaviour est définie sur FAIL. Cette propriété est ignorée si le Type d’instruction est INSERT |
rollback-on-failure |
Specify how to handle error. By default (false), if an error occurs while processing a FlowFile, the FlowFile will be routed to “failure” or “retry” relationship based on error type, and processor can continue with next FlowFile. Instead, you may want to rollback currently processed FlowFiles and stop further processing immediately. In that case, you can do so by enabling this “Rollback On Failure” property. If enabled, failed FlowFiles will stay in the input relationship without penalizing it and being processed repeatedly until it gets processed successfully or removed by other means. It is important to set adequate “Yield Duration” to avoid retrying too frequently. |
table-schema-cache-size |
Spécifie le nombre de schémas de tables à mettre en cache |
Relations¶
Nom |
Description |
|---|---|
failure |
Un FlowFile est routé vers cette relation si la base de données ne peut pas être mise à jour et qu’une nouvelle tentative d’opération est vouée à l’échec, par exemple en raison d’une requête non valide ou d’une violation de la contrainte d’intégrité |
retry |
Un FlowFile est routé vers cette relation si la base de données ne peut pas être mise à jour, mais une nouvelle tentative de l’opération peut être couronnée de succès |
success |
Création réussie du FlowFile à partir du jeu de résultats de la requête SQL. |
Écrit les attributs¶
Nom |
Description |
|---|---|
putdataserecord.error |
Si une erreur survient au cours du traitement, le FlowFile sera routé vers un échec ou une nouvelle tentative, et cet attribut sera renseigné avec la cause de l’erreur. |
Cas d’utilisation¶
Insérer des enregistrements dans une base de données |