Scénario 2 : Utiliser l'instance PreparedStatement pour faire une requête sur des données - 6.1

Composants Talend Guide de référence

EnrichVersion
6.1
EnrichProdName
Talend Big Data
Talend Big Data Platform
Talend Data Fabric
Talend Data Integration
Talend Data Management Platform
Talend Data Services Platform
Talend ESB
Talend MDM Platform
Talend Open Studio for Big Data
Talend Open Studio for Data Integration
Talend Open Studio for Data Quality
Talend Open Studio for ESB
Talend Open Studio for MDM
Talend Real-Time Big Data Platform
task
Création et développement
Gouvernance de données
Qualité et préparation de données
EnrichPlatform
Studio Talend

Le scénario suivant décrit un Job à quatre composants permettant de lier la colonne d'une table à un fichier clients. En effet, la table MySQL contient la liste de tous les Etats américains avec leur identifiant, et le fichier contient des informations sur vos clients avec l'identifiant de l'état dans lequel ils résident. L'objectif de ce scénario est de récupérer le nom de l'Etat pour chaque client à l'aide d'une requête SQL. Afin de traiter un grand nombre de données plus rapidement, utilisez l'objet PreparedStatement permettant de n'exécuter qu'une seule fois la requête au lieu de l'effectuer à chaque ligne. Chaque ligne de données est envoyée comme paramètre. Un objet PreparedStatement peut également être utilisé pour éviter une injection SQL.

Pour ce scénario, utilisez un fichier et une base de données dont vous avez préalablement stocké la connexion et les propriétés dans des métadonnées dans le Repository. Pour plus d'informations concernant la création de métadonnées de fichiers délimités, la création de métadonnées de connexion à une base de données et l'utilisation de ces métadonnées, consultez le Guide utilisateur du Studio Talend.

  • A partir du Repository, développez le nœud Metadata et File delimited

  • Sélectionnez la métadonnée correspondant au fichier clients que vous souhaitez utiliser dans ce Job. Ici, vous utilisez la métadonnée customers.

  • Glissez cette métadonnée dans l'espace de modélisation et double-cliquez sur tFileInputDelimited dans la boîte de dialogue [Components] afin de créer un composant tFileInputDelimited déjà paramétré.

  • Dans la liste Schema, sélectionnez Built-in afin de modifier le schéma de votre composant. Puis, cliquez sur le bouton [...] à côté du champ Edit schema pour ajouter la colonne dans laquelle insérer le nom de l'Etat.

  • Cliquez sur le bouton [+] pour ajouter une colonne au schéma. Renommez cette colonne LabelStateRecordSet, et elle est de type objet, donc sélectionnez Object dans la liste Type. Cliquez sur OK pour enregistrer vos modifications.

  • A partir de la Palette, sélectionnez les composants tMysqlRow, tParseRecordSet et tFileOutputDelimited et glissez-les dans l'espace de modélisation.

  • Reliez les quatre composants via des liens de type Row > Main.

  • Double-cliquez sur le composant tMysqlRow pour paramétrer ses propriétés dans l'onglet Basic settings de la vue Component.

  • Dans la liste Property Type, sélectionnez Repository et cliquez sur le bouton [...] pour sélectionner la connexion à la base de données centralisée dans les métadonnées du Repository. Les champs DB Version, Host, Port, Database, Username et Password sont renseignés automatiquement. Si vous êtes en mode Built-in, renseignez ces champs manuellement.

  • Dans la liste Schema, sélectionnez Built-in pour paramétrer le schéma manuellement et ajouter la colonne LabelStateRecordSet, ou cliquez directement sur le bouton Sync columns pour récupérer le schéma du composant précédent.

  • Dans le champ Query, saisissez la requête SQL à utiliser. Ici, vous souhaitez récupérer les noms des Etats américains contenus dans la colonne LabelState de la table MySQL us_state : "SELECT LabelState FROM us_state WHERE idState=?". Le point d'interrogation "?" représente le paramètre à définir dans l'onglet Advanced settings.

  • Cliquez sur l'onglet Advanced settings pour paramétrer les propriétés avancées du composant.

  • Cochez la case Propagate QUERY's recordset et sélectionnez la colonne LabelStateRecordSet dans la liste use column pour insérer le résultat de la requête dans cette colonne.

  • Cochez la case Use PreparedStatement et définissez le paramètre utilisé dans la requête dans le tableau Set PreparedStatement Parameters.

  • Cliquez sur le bouton [+] pour ajouter un paramètre.

  • Dans la cellule Parameter Index, saisissez la position du paramètre dans l'instruction SQL. Saisissez "1" étant donné que vous n'utilisez qu'un seul paramètre dans l'exemple.

  • Dans la cellule Parameter Type, saisissez le type du paramètre. Ici, le paramètre est de type entier, donc sélectionnez Int dans la liste.

  • Dans la cellule Parameter Value, saisissez la valeur du paramètre. Ici, vous souhaitez récupérer le nom de l'Etat en fonction de leur ID pour chaque client du fichier d'entrée, saisissez donc "row1.idState".

  • Double-cliquez sur le composant tParseRecordSet pour paramétrer ses propriétés dans l'onglet Basic settings de la vue Component.

  • Dans la liste Prev. Comp. Column list, sélectionnez la colonne du composant précédent à analyser. Dans cet exemple, sélectionnez la colonne LabelStateRecordSet.

  • Cliquez sur le bouton Sync columns pour récupérer le schéma du composant précédent et le tableau Attribute table est automatiquement renseigné avec les colonnes du schéma.

  • Dans le tableau Attribute table, dans le champ Value correspondant à la colonne LabelStateRecordSet, saisissez entre guillemets le nom de la colonne contenant le nom des Etats à récupérer et à mettre en correspondance avec chaque client. Dans cet exemple, saisissez "LabelState".

  • Double-cliquez sur le composant tFileOutputDelimited pour paramétrer ses propriétés dans l'onglet Basic settings de la vue Component.

  • Dans le champ File Name, renseignez le chemin d'accès et le nom du fichier de sortie.

  • Cliquez sur le bouton Sync columns pour récupérer le schéma du composant précédent.

  • Enregistrez votre Job et appuyez sur F6 pour l'exécuter.

Une colonne contenant le nom de l'Etat américain correspondant à chaque client a été ajoutée au fichier.