UpdateDatabaseTable 2025.5.31.15¶
Bundle¶
org.apache.nifi | nifi-standard-nar
Description¶
Ce processeur utilise une connexion JDBC et des enregistrements entrants pour générer toutes les modifications des tables de la base de données nécessaires à la prise en charge des enregistrements entrants. Il attend une structure d’enregistrement “plate”, c’est-à-dire qu’aucun des champs de niveau supérieur ne comporte de champs imbriqués destinés à devenir eux-mêmes des colonnes.
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 |
Database Dialect Service |
Le composant Database Dialect Service permettant de générer des instructions spécifiques pour un service ou un fournisseur particulier. |
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 d’optimiser le traitement ou d’offrir des fonctions supplémentaires. |
record-reader |
Le service de lecture des fichiers de flux entrants. Le lecteur n’est utilisé que pour déterminer le schéma des enregistrements, les enregistrements proprement dits ne seront pas traités. |
updatedatabasetable-catalog-name |
Le nom du catalogue 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. |
updatedatabasetable-create-table |
Indique comment traiter la table cible lorsqu’elle n’existe pas (la créer, échouer, par exemple). |
updatedatabasetable-dbcp-service |
Le Controller Service qui est utilisé pour obtenir la (les) connexion(s) à la base de données |
updatedatabasetable-primary-keys |
Une liste de noms de champs d’enregistrement séparés par des virgules qui identifie de manière unique une ligne dans la base de données. Cette propriété n’est utilisée que si la table spécifiée doit être créée, auquel cas les champs de clé primaire seront utilisés pour spécifier les clés primaires de la table nouvellement créée. IMPORTANT : les champs de la clé principale doivent correspondre exactement aux noms des champs de l’enregistrement, sauf si l’option “identificateurs de colonne cités” est fausse et que la base de données autorise les noms de colonne insensibles à la casse. Dans la pratique, il est préférable de spécifier des champs de clé primaire correspondant exactement aux noms des champs de l’enregistrement, qui deviendront les noms des colonnes de la table créée. |
updatedatabasetable-query-timeout |
Définit le nombre de secondes pendant lesquelles le pilote attendra l’exécution d’une requête. Une valeur de 0 signifie qu’il n’y a pas de délai d’expiration. NOTE : les valeurs non nulles peuvent ne pas être prises en charge par le pilote. |
updatedatabasetable-quoted-column-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 et/ou de forcer les noms des champs d’enregistrement à correspondre exactement aux noms de colonnes. |
updatedatabasetable-quoted-table-identifiers |
En activant cette option, le nom de la table sera cité pour permettre l’utilisation de caractères spéciaux dans le nom de la table et/ou pour forcer la valeur de la propriété Table Name à correspondre exactement au nom de la table cible. |
updatedatabasetable-record-writer |
Spécifie le Controller Service à utiliser pour écrire les résultats dans un FlowFile. Le Record Writer doit utiliser Inherit Schema pour émuler le comportement du schéma déduit, c’est-à-dire qu’un schéma explicite n’a pas besoin d’être défini dans le Rédacteur d’enregistrements, et sera fourni par la même logique que celle utilisée pour déduire le schéma à partir des types de colonnes. Si Create Table Strategy est défini sur “Create If Not Exists”, le format de sortie du Record Writer doit correspondre à celui du Record Reader afin que les données puissent être insérées à l’emplacement de la table créée. Notez que cette propriété est utilisée uniquement si “Update Field Names” est défini sur true et si les noms de champs ne correspondent pas tous exactement aux noms de colonnes. Si aucune mise à jour n’est nécessaire pour les noms de champs (ou si “Update Field Names” est défini sur false), le Record Writer n’est pas utilisé et le FlowFile d’entrée est routé vers success ou failure sans modification. |
updatedatabasetable-schema-name |
Le nom du schéma de la base de données 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. |
updatedatabasetable-table-name |
Le nom de la table de base de données à mettre à jour. Si la table n’existe pas, elle sera créée ou une erreur sera générée, en fonction de la valeur de la propriété Create Table. |
updatedatabasetable-translate-field-names |
Si la valeur est “vrai”, le Processeur tentera de traduire les noms de champ en noms de colonne correspondants pour la table spécifiée, afin de déterminer si le nom de champ existe en tant que colonne dans la table cible. NOTE : si la table cible n’existe pas et doit être créée, cette propriété est ignorée et les noms des champs seront utilisés tels quels. S’il est faux, les noms des champs doivent correspondre exactement aux noms des colonnes, sinon la colonne peut ne pas être trouvée et une erreur peut être signalée, indiquant que la colonne existe déjà. |
updatedatabasetable-update-field-names |
Cette propriété indique s’il faut mettre à jour le schéma de sortie de manière à ce que les noms de champ soient ensemble avec les noms de colonne exacts de la table spécifiée. Cette option doit être utilisée si les noms des champs de l’enregistrement entrant peuvent ne pas correspondre aux noms des colonnes de la table en termes de majuscules et de minuscules. Par exemple, cette propriété doit être définie sur true si le FlowFile de sortie est destiné à Oracle, qui s’attend par exemple à ce que les noms de champs correspondent exactement aux noms de colonnes. NOTE : la valeur de la propriété “Translate Field Names” est ignorée lors de la mise à jour des noms de champs. Ils sont plutôt mis à jour pour correspondre au nom de colonne renvoyé par la base de données. |
Relations¶
Nom |
Description |
---|---|
failure |
Un FlowFile contenant les enregistrements routés vers cette relation si l’enregistrement n’a pas pu être transmis à la base de données. |
success |
Un FlowFile contenant les enregistrements routés vers cette relation après que l’enregistrement a été transmis avec succès à la base de données. |
Écrit les attributs¶
Nom |
Description |
---|---|
output.table |
Cet attribut est écrit sur les FlowFiles routés vers les relations “success” et “failure”, et contient le nom de la table cible. |
output.path |
Cet attribut est écrit sur les FlowFiles routés vers les relations “success” et “failure”, et contient le chemin du système de fichiers vers la table (ou vers l’emplacement de la partition si la table est partitionnée). |
mime.type |
Définit l’attribut mime.type au type MIME spécifié par le Record Writer, uniquement si un Record Writer est spécifié et que la valeur Update Field Names est “true”. |
record.count |
Définit le nombre d’enregistrements dans le FlowFile, uniquement si un Record Writer est spécifié et si Update Field Names est défini sur “true”. |