PutDatabaseRecord 2025.10.2.19

Bundle

org.apache.nifi | nifi-standard-nar

Description

Le processeur PutDatabaseRecord utilise un RecordReader spécifié pour saisir (potentiellement plusieurs) des enregistrements à partir d’un fichier de flux entrant. Ces enregistrements sont traduits en instructions SQL qui sont exécutées comme une seule transaction. Si des erreurs se produisent, le fichier de flux est acheminé vers la relation fail ou la relation retry, et si les enregistrements sont transmis avec succès, le fichier de flux entrant est acheminé vers la relation success. Le type d’instruction exécuté par le processeur est spécifié via la propriété Statement Type, qui accepte certaines valeurs codées en dur telles que INSERT, UPDATE et DELETE, ainsi que « Use statement.type Attribute » (Utiliser l’attribut statement.type). Grâce à cette instruction, le processeur obtient le type d’instruction à partir d’un attribut de fichier de flux. IMPORTANT : Si le type d’instruction est UPDATE, les enregistrements entrants ne doivent pas modifier la ou les valeurs des clés primaires (ou des clés de mise à jour spécifiées par l’utilisateur). Si de tels enregistrements sont rencontrés, l’instruction UPDATE émise vers la base de données peut ne rien faire (si aucun enregistrement existant avec les nouvelles valeurs de clé primaire n’est trouvé) ou peut corrompre par inadvertance les données existantes (en modifiant les enregistrements pour lesquels les nouvelles valeurs des clés primaires existent).

Balises

database, delete, insert, jdbc, put, record, sql, update

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

Type de base de données pour générer des instructions spécifiques à un service ou à un fournisseur particulier. Le type générique prend en charge la plupart des cas, mais la sélection d’un type spécifique permet un traitement optimal ou des fonctionnalités supplémentaires.

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

Nom de la base de données (ou nom du catalogue, selon le système de destination) que l’instruction doit mettre à jour. 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 catalogue doit correspondre exactement au nom du catalogue de la base de données.

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

Spécifie le type d’instruction SQL à générer. Veuillez vous référer à la documentation de la base de données pour une description du comportement de chaque opération. Notez que certains types de base de données peuvent ne pas prendre en charge certains types d’instruction. Si l’instruction « Use statement.type Attribute » est choisie, la valeur est extraite de l’attribut instruction.type dans le FlowFile. L’option « Use statement.type Attribute » est la seule option qui autorise le type d’instruction ’SQL’. Si “SQL” est spécifiée, la valeur du champ spécifiée par la propriété “Champ contenant SQL est censée être une instruction SQL valide sur la base de données cible et sera exécutée telle quelle.

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

Spécifiez comment traiter l’erreur. Par défaut (false), si une erreur survient lors du traitement d’un FlowFile, le FlowFile sera routé vers une relation “failure” or “retry” en fonction du type d’erreur, et le processeur continuera avec le FlowFile suivant. Au lieu de cela, vous pouvez souhaiter revenir en arrière sur les FlowFiles actuellement traités et arrêter immédiatement tout traitement supplémentaire. Dans ce cas, activez la propriété “Rollback On Failure”. Si cette option est activée, les FlowFiles ayant échoué resteront dans la relation d’entrée sans être pénalisés et seront traités à plusieurs reprises jusqu’à ce qu’ils soient traités avec succès ou supprimés par d’autres moyens. Il est important de définir une “Yield Duration” adéquate pour éviter de réessayer trop fréquemment.

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