ExecuteSQLRecord 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 spécifié par un Record Writer. 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.
Exigences en matière d’entrées¶
ALLOWED
Prend en charge les propriétés dynamiques sensibles¶
true
Propriétés¶
Propriété |
Description |
---|---|
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. |
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-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. |
esqlrecord-normalize |
Indique s’il faut modifier les caractères des noms de colonnes. Par exemple, les deux-points et les points seront remplacés par des traits de soulignement. |
esqlrecord-record-writer |
Spécifie le Controller Service à utiliser pour écrire les résultats dans un FlowFile. Le Record Writer peut 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, et sera fourni par la même logique que celle utilisée pour déduire le schéma à partir des types de colonnes. |
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 dans la requête SELECT |
executesql.query.duration |
Durée combinée du temps d’exécution de la requête et du temps de recherche en millisecondes |
executesql.query.executiontime |
Durée d’exécution de la requête en millisecondes |
executesql.query.fetchtime |
Durée de la recherche du jeu de résultats en millisecondes |
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é. |
mime.type |
L’ensemble de l’attribut mime.type est défini sur le type MIME spécifié par le Record Writer. |
record.count |
Le nombre d’enregistrements générés en sortie par le Record Writer. |