Effectuer une opération d'itération sur des tables et en effacer le contenu grâce à un modèle SQL défini par l'utilisateur (SQL Template) - 7.1

MySQL

author
Talend Documentation Team
EnrichVersion
Cloud
7.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 ESB
Talend Open Studio for MDM
Talend Real-Time Big Data Platform
task
Création et développement > Systèmes tiers > Composants Database > Composants MySQL
Gouvernance de données > Systèmes tiers > Composants Database > Composants MySQL
Qualité et préparation de données > Systèmes tiers > Composants Database > Composants MySQL
EnrichPlatform
Studio Talend

Le scénario Java suivant décrit un Job à trois composants qui permet d'effectuer une opération d'itération, dans les tables spécifiées d'une base de données MySQL, en utilisant une clause de type WHERE. Le Job permet ensuite d'effacer le contenu de ces tables directement sur le SGBD grâce à un modèle SQL (SQL Template) défini par l'utilisateur.

Pour plus d'informations concernant les technologies supportées par Talend, consultez Composants Talend.

Pour une utilisation avancée, commencez par créer une connexion à la base de données qui contient les tables que vous voulez vider de leur contenu.

  • Dans la vue en arborescence du Repository, développez le nœud Metadata puis cliquez-droit sur DB Connections pour créer une connexion à la base de données de travail et stocker les informations de connexion en local.

    Pour plus d'informations concernant les métadonnées, consultez le Guide utilisateur du Studio Talend .

    Sinon, déposez un composant tMysqlConnection dans l'éditeur de modélisation graphique et renseignez les paramètres de connexion manuellement.

  • À partir du Repository, déposez dans l'éditeur de modélisation graphique la connexion que vous venez de créer.

    La boîte de dialogue Components s'ouvre.

  • Sélectionnez le composant tMysqlConnection, puis cliquez sur OK.

    Le composant tMysqlConnection apparait alors dans l'éditeur de modélisation graphique et les paramètres de connexion, accessibles depuis la vue Basic settings, sont automatiquement renseignés.

  • À partir de la Palette, cliquez-déposez les composants tMysqlTableList et tELT dans l'éditeur de modélisation graphique.

  • Reliez les composants tMysqlConnection et tMysqlTableList à l'aide d'un lien OnSubjobOk.

  • Reliez les composants tMysqlTableList et tELT à l'aide d'un lien Iterate.

  • Double-cliquez sur le tMysqlConnection pour afficher la vue Basic settings du composant si vous voulez en vérifier les paramètres de connexion.

Dans cet exemple, connectez-vous à une base de données MySQL appelée examples.

  • Dans l'éditeur de modélisation graphique, double-cliquez sur le composant tMysqlTableList pour en afficher les paramètres de base et les définir (vue Basic settings).

  • Sélectionnez la connexion MySQL appropriée à partir de la liste déroulante Component list, dans le cas où vous utilisez plus d'une connexion.

  • Renseignez la clause WHERE dans le champ approprié, en veillant à utiliser la bonne syntaxe, pour effectuer une itération sur la ou les tables dont vous voulez effacer le contenu.

    Dans ce scénario, opérez l'itération sur toutes les tables dont le nom commence par "ex".

  • Dans l'éditeur de modélisation graphique, double-cliquez sur le composant tELT pour en afficher les paramètres de base et les définir (vue Basic settings).

  • Dans le champ Database Name, renseignez le nom de la base de données où se trouvent les tables sur lesquelles vous voulez travailler.

  • Sélectionnez la connexion MySQL appropriée à partir de la liste déroulante Component list, dans le cas où vous utilisez plus d'une connexion.

  • Cliquez dans le champ Table name et appuyez sur Ctrl+Espace pour accéder à la liste des variables globales.

  • À partir de cette liste de variables, sélectionnez ((String)globalMap.get("tMysqlTableList_1_CURRENT_TABLE")).

Comment créer votre propre modèle SQL (SQL Template) :

  • Dans la vue en arborescence du Repository, développez successivement les nœuds SQL Templates et MySQL.

  • Cliquez-droit sur le nœud UserDefined et sélectionnez l'option Create SQLTemplate à partir de la liste.

    L'assistant New SQLTemplates'affiche à l'écran.

  • Saisissez un nom pour le nouveau modèle (SQL template) et remplissez les autres champs si nécessaire, puis cliquez sur Finish pour fermer l'assistant.

    L'éditeur de modèle SQL s'affiche dans l'éditeur graphique.

  • Supprimez le code existant et saisissez le code permettant d'exécuter l'action voulue, c'est-à-dire, ici, effacer le contenu de toutes les tables dont les noms commencent par "ex".

Remarque :

Dans un code SQL template, il est impératif d'utiliser le nom exact de la variable, en association avec le paramètre désignant le nom de la table ("__TABLE-NAME__" dans cet exemple). Pour afficher le nom de la variable utilisée, positionnez votre curseur sur le champ Table Name de la vue Basic settings du composant tELT.

  • Appuyez sur Ctrl+S pour sauvegarder le nouveau modèle que vous venez de définir.

La prochaine étape consiste à ajouter ce nouveau modèle SQL template à la liste de modèles du même type dans le composant tELT.

Comment ajouter votre propre modèle SQL à la liste de modèles du même type :

  • Dans la vue Component du composant tELT, cliquez sur l'onglet SQL Templates pour afficher la liste de modèles SQLTemplate List.

  • Cliquez sur le bouton Add et ajoutez deux lignes de modèles SQL template.

  • Cliquez sur la première ligne pour afficher un menu déroulant puis cliquez sur la flèche de ce menu pour dérouler la liste des modèles.

  • Dans la liste, sélectionnez le modèle SQL template que vous venez de créer.

  • Assurez-vous que le modèle de la seconde ligne est bien en mode Commit.

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

Toutes les tables de la base de données MySQL examples dont le nom commence par "ex" sont alors vidées de leur contenu.