ExecuteSQL 2025.5.31.15

Bundle

org.apache.nifi | nifi-standard-nar

Description

Exécute la requête SELECT fournie à SQL. Le résultat de la requête sera converti au format Avro. Le flux est utilisé pour prendre en charge des jeux de résultats de taille arbitraire. Ce processeur peut être planifié pour s’exécuter sur un temporisateur, ou une expression cron, à l’aide des méthodes de planification standard, ou il peut être déclenché par un FlowFile entrant. S’il est déclenché par un FlowFile entrant, les attributs de ce FlowFile seront disponibles lors de l’évaluation de la requête SELECT, et la requête peut utiliser le signe « ? » pour échapper les paramètres. Dans ce cas, les paramètres à utiliser doivent exister en tant qu’attributs FlowFile avec la convention de nommage sql.args.N.type et sql.args.N.value, où N est un entier positif. La valeur sql.args.N.type doit être un nombre indiquant le type de JDBC. Le contenu du FlowFile est censé être au format UTF-8. L’attribut FlowFile « executesql.row.count » indique le nombre de lignes sélectionnées.

Balises

database, jdbc, query, select, sql

Exigences en matière d’entrées

ALLOWED

Prend en charge les propriétés dynamiques sensibles

true

Propriétés

Propriété

Description

Stratégie de sortie du contenu

Spécifie la stratégie d’écriture du contenu FlowFile lors du traitement de l’entrée FlowFiles. Cette stratégie s’applique au traitement des requêtes qui ne produisent pas de résultats.

Service de pooling de connexions de bases de données

Le Controller Service qui est utilisé pour obtenir la connexion à la base de données

Temps d’attente maximum

Temps maximum autorisé pour une requête SQL SELECT en cours d’exécution, zéro signifiant qu’il n’y a pas de limite. Le temps maximum inférieur à 1 seconde sera égal à zéro.

Requête SQL

La requête SQL à exécuter. La requête peut être vide, une valeur constante, ou construite à partir d’attributs à l’aide d’Expression Language. Si cette propriété est spécifiée, elle sera utilisée quel que soit le contenu des FlowFiles entrants. Si cette propriété est vide, le contenu du FlowFile entrant est censé contenir une requête SQL SELECT valide, que le processeur doit envoyer à la base de données. Notez qu’Expression Language n’est pas évalué pour le contenu des FlowFiles.

compression-format

Type de compression à utiliser lors de l’écriture des fichiers Avro. La valeur par défaut est None.

dbf-default-precision

Lorsqu’une valeur DECIMAL/NUMBER est écrite sous la forme d’un type logique Avro décimal, une précision spécifique indiquant le nombre de chiffres disponibles est exigée. En général, la précision est définie par la définition du type de données de la colonne ou par les moteurs de base de données par défaut. Toutefois, certains moteurs de base de données peuvent renvoyer une précision non définie (0). La précision décimale par défaut est utilisée pour écrire des nombres dont la précision n’est pas définie.

dbf-default-scale

Lorsqu’une valeur DECIMAL/NUMBER est écrite sous la forme d’un type logique Avro décimal, une échelle spécifique indiquant le nombre de chiffres décimaux disponibles est exigée. En général, l’échelle est définie par la définition du type de données de la colonne ou par les moteurs de base de données par défaut. Toutefois, lorsque la précision renvoyée est indéfinie (0), l’échelle peut également être incertaine avec certains moteurs de base de données. L’échelle décimale par défaut est utilisée lors de l’écriture de ces nombres non définis. Si une valeur comporte plus de décimales que l’échelle spécifiée, la valeur sera arrondie à l’unité supérieure, par exemple 1,53 devient 2 avec l’échelle 0, et 1,5 avec l’échelle 1.

dbf-normalize

Indique s’il faut remplacer les caractères non compatibles avec Avro présents dans les noms de colonne par des caractères compatibles avec Avro. Par exemple, les deux-points et les points seront remplacés par des traits de soulignement afin de créer un enregistrement Avro valide.

dbf-user-logical-types

Utiliser ou non les types logiques Avro pour les colonnes DECIMAL/NUMBER, DATE, TIME et TIMESTAMP. Si cette option est désactivée, les données sont écrites sous forme de chaîne. Si elle est activée, les types logiques sont utilisés et écrits comme leur type sous-jacent, à savoir DECIMAL/NUMBER en tant que « décimal » logique, écrit sous forme d’octets avec une précision supplémentaire et des métadonnées d’échelle, DATE en tant que « date-millis » logique, écrit sous forme d’entier indiquant les jours depuis l’époque Unix (1970-01-01), TIME en tant que « time-millis » logique, écrit sous forme d’entier indiquant les millisecondes depuis l’époque Unix, et TIMESTAMP en tant que « timestamp-millis » logique, écrit sous forme d’entier long indiquant les millisecondes depuis l’époque Unix. Si un lecteur d’enregistrements Avro écrits connaît également ces types logiques, ces valeurs peuvent être désérialisées avec plus de contexte en fonction de l’implémentation du lecteur.

esql-auto-commit

Active ou désactive la fonctionnalité de validation automatique de la connexion DB. La valeur par défaut est « true ». La valeur par défaut peut être utilisée avec la plupart des pilotes JDBC et cette fonctionnalité n’a pas d’impact dans la plupart des cas puisque ce processeur est utilisé pour lire des données. Cependant, pour certains pilotes JDBC tels que le pilote PostgreSQL, il est exigé de désactiver la fonctionnalité de validation automatique afin de limiter le nombre de lignes de résultats récupérées à la fois. Lorsque la validation automatique est activée, le pilote postgreSQL charge le jeu de résultats complet en mémoire en une seule fois. Cela peut entraîner une utilisation importante de la mémoire lors de l’exécution de requêtes qui récupèrent des ensembles de données volumineux. Vous trouverez plus de détails sur ce comportement du pilote PostgreSQL à l’adresse suivante : https://jdbc.postgresql.org//documentation/head/query.html.

esql-fetch-size

Nombre de lignes de résultats à extraire du jeu de résultats à la fois. Il s’agit d’une indication au pilote de la base de données qui peut ne pas être respectée et/ou ne pas être exacte. Si la valeur spécifiée est zéro, l’indication est ignorée.

esql-max-rows

Le nombre maximum de lignes de résultats qui seront incluses dans un seul FlowFile. Cela vous permettra de diviser de très grands jeux de résultats en plusieurs FlowFiles. Si la valeur de retour spécifiée est zéro, toutes les lignes sont renvoyées dans un seul FlowFile.

esql-output-batch-size

Le nombre de sorties FlowFiles à mettre en file d’attente avant de valider la session de processus. Si cette valeur est fixée à zéro, la session sera validée lorsque toutes les lignes du jeu de résultats auront été traitées et que les sorties FlowFiles seront prêtes à être transférées vers la relation en aval. Pour les jeux de résultats volumineux, cela peut entraîner le transfert d’une grande quantité de FlowFiles à la fin de l’exécution du processeur. Si cette propriété est définie, lorsque le nombre spécifié de FlowFiles est prêt à être transféré, la session est engagée, ce qui libère les FlowFiles pour la relation en aval. Remarque : l’attribut fragment.count ne sera pas paramétré sur FlowFiles si cette propriété est définie.

sql-post-query

Liste délimitée par des points-virgules des requêtes exécutées après l’exécution de la requête SQL principale. Par exemple, définir les propriétés de la session après la requête principale. Il est possible d’inclure des points-virgules dans les instructions elles-mêmes en les échappant à l’aide d’une barre oblique inverse (« ; »). Les résultats/sorties de ces requêtes seront supprimés s’il n’y a pas d’erreurs.

sql-pre-query

Liste délimitée par des points-virgules des requêtes exécutées avant l’exécution de la requête SQL principale. Par exemple, définir les propriétés de la session avant la requête principale. Il est possible d’inclure des points-virgules dans les instructions elles-mêmes en les échappant à l’aide d’une barre oblique inverse (« ; »). Les résultats/sorties de ces requêtes seront supprimés s’il n’y a pas d’erreurs.

Relations

Nom

Description

failure

L’exécution de la requête SQL a échoué. Le FlowFile entrant sera pénalisé et routé vers cette relation

success

Création réussie du FlowFile à partir du jeu de résultats de la requête SQL.

Écrit les attributs

Nom

Description

executesql.row.count

Contient le nombre de lignes renvoyées par la requête. Si l’option « Max Rows Per Flow File » est paramétrée, ce nombre correspondra au nombre de lignes du FlowFile et non au jeu de résultats.

executesql.query.duration

Durée combinée du temps d’exécution de la requête et du temps de recherche en millisecondes. Si l’option « Max Rows Per Flow File » est paramétrée, ce nombre ne reflétera que le temps de recherche des lignes du FlowFile et non du jeu de résultats.

executesql.query.executiontime

Durée d’exécution de la requête en millisecondes. Ce chiffre reflète le temps d’exécution de la requête, quel que soit le réglage du paramètre « Max Rows Per Flow File ».

executesql.query.fetchtime

Durée de la recherche du jeu de résultats en millisecondes. Si l’option « Max Rows Per Flow File » est paramétrée, ce nombre ne reflétera que le temps de recherche des lignes du FlowFile et non du jeu de résultats.

executesql.resultset.index

Si plusieurs jeux de résultats sont renvoyés, l’index basé sur zéro de ce jeu de résultats.

executesql.error.message

Si le traitement d’un FlowFile entrant provoque une exception, le FlowFile est routé vers l’échec et cet attribut est défini sur le message d’exception.

fragment.identifier

Si l’option « Max Rows Per Flow File » est activée, tous les FlowFiles d’un même jeu de résultats de requête auront la même valeur pour l’attribut fragment.identifier. Ceci peut ensuite être utilisé pour corréler les résultats.

fragment.count

Si l’option « Max Rows Per Flow File » est paramétrée, il s’agit du nombre total de lignes FlowFiles produites par un seul ResultSet. Cet attribut peut être utilisé en conjonction avec l’attribut fragment.identificateur afin de savoir combien de FlowFiles appartiennent au même ResultSet entrant. Si la taille du lot de sortie est paramétrée, cet attribut ne sera pas renseigné.

fragment.index

Si l’option « Max Rows Per Flow File » est activée, il s’agit de la position de ce FlowFile dans la liste des FlowFiles sortants qui ont tous été dérivés du même FlowFile de jeu de résultats. Cet attribut peut être utilisé en conjonction avec l’attribut fragment.identifier pour savoir quels FlowFiles proviennent du même jeu de résultats de requête et dans quel ordre les FlowFiles ont été produits

entrée.flowfile.uuid

Si le processeur dispose d’une connexion entrante, les FlowFiles sortants recevront cet attribut, qui sera défini sur la valeur de l’UUID du FlowFile entrant. S’il n’y a pas de connexion entrante, l’attribut ne sera pas ajouté.