Effectuer des opérations de MERGE directement dans le SGBD - 7.1

SQLTemplate

author
Talend Documentation Team
EnrichVersion
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 ELT > Composants SQLTemplate
Gouvernance de données > Systèmes tiers > Composants ELT > Composants SQLTemplate
Qualité et préparation de données > Systèmes tiers > Composants ELT > Composants SQLTemplate
EnrichPlatform
Studio Talend

Ce scénario décrit un Job simple permettant d'ouvrir une connexion à une base de données MySQL, d'effectuer des opérations de fusion ou de mise à jour sur les données d'une table source vers une table cible en fonction de l'identifiant de l'utilisateur et d'afficher le contenu de la table cible avant et après les opérations de MERGE. Une clause de type WHERE est utilisée pour filtrer les données lors de ces opérations.

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

  • À partir de la Palette, déposez dans l'espace de modélisation graphique les composants suivants : un tMysqlConnection, un tSQLTemplateMerge, deux tMysqlInput et deux tLogRow.

  • Connectez le composant tMysqlConnection au premier tMysqlInput à l'aide d'un lien Trigger > OnSubjobOk.

  • Connectez le premier tMysqlInput au premier tLogRow à l'aide d'un lien Row > Main. Cette ligne affichera le contenu initial de la table cible dans la console.

  • Connectez le premier tMysqlInput au composant tSQLTemplateMerge, et le tSQLTemplateMerge au second composant tMysqlInput à l'aide de connexions Trigger > OnSubjobOk.

  • Connectez le second tMysqlInput au second tLogRow à l'aide d'un lien Row > Main. Cette ligne affichera le résultat des opérations de MERGE dans la console.

  • Double-cliquez sur le composant tMysqlConnection pour afficher l'onglet Basic settings.

  • Paramétrez manuellement les détails de la connexion à la base de données ou sélectionnez Repository dans la liste Property Type et sélectionnez votre connexion à une base de données si celle-ci a déjà été définie et stockée dans la zone Metadata de la vue Repository.

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

  • Double-cliquez sur le premier composant tMysqlInput afin d'afficher sa vue Basic settings.

  • Cochez la case Use an existing connection. Si vous souhaitez utiliser plus d'un composant de connexion dans votre Job, sélectionnez le composant que vous souhaitez utiliser à partir de la liste Component List.

  • Cliquez sur le bouton [...] à côté de Edit schema et définissez la structure des données de la table cible, ou sélectionnez Repository à partir de la liste Schema, puis sélectionnez la table cible si le schéma a déjà été défini et stocké dans la zone Metadata de la vue Repository.

    Pour ce scénario, choisissez Built-in.

  • Définissez les colonnes comme indiqué ci-dessus, puis cliquez sur OK pour propager la structure du schéma au composant de sortie et fermer la boîte de dialogue.

  • Renseignez le champ Table Name avec le nom de la table cible, soit customer_info_merge pour ce scénario.

  • Cliquez sur le bouton Guess Query, ou saisissez "SELECT * FROM customer_info_merge" dans la zone Query afin de récupérer toutes les colonnes des tables.

  • Définissez les propriétés du second composant tMysqlInput en utilisant exactement les mêmes paramètres que dans le premier composant tMysqlInput.

  • Dans l'onglet Basic settings de chaque composant tLogRow, sélectionnez l'option Table dans la zone Mode afin d'afficher le résultat sous forme de tableau dans la console.

  • Double-cliquez sur le composant tSQLTemplateMerge pour afficher l'onglet Basic settings.

  • Saisissez les noms de la table source et de la table cible dans les champs correspondants.

    Pour ce scénario, la table source, new_customer_info, contient huit enregistrements ; la table cible, customer_info_merge, contient cinq enregistrements et les deux tables ont la même structure.

Remarque :

Il est possible que la table source et la table cible aient des schémas différents. Dans ce cas, cependant, assurez-vous que la colonne source et la colonne cible spécifiées dans chaque ligne des tables Merge ON, UPDATE Columns et INSERT Columns aient un type de données identique et que la longueur de la colonne cible permette l'insertion de données à partir de la colonne source correspondante.

  • Définissez le schéma source manuellement, ou sélectionnez Repository à partir de la liste Schema et sélectionnez la table souhaitée si le schéma a déjà été défini et stocké dans la zone Metadata de la vue Repository.

    Pour ce scénario, choisissez Built-in.

  • Définissez les colonnes comme indiqué ci-dessus puis cliquez sur OK pour fermer la boîte de dialogue. Faites de même pour le schéma cible.

  • Cliquez sur le bouton [+] sous la table Merge ON pour ajouter une ligne et sélectionnez la colonne ID comme clé primaire.

  • Cochez la case Use UPDATE (WHEN MATCHED) pour mettre à jour les données existantes lors des opérations de MERGE, définissez les colonnes à mettre à jour en cliquant sur le bouton [+] et sélectionnez les colonnes souhaitées.

    Le but de ce scénario est de mettre à jour toutes les colonnes selon l'identifiant (ID) des utilisateurs. Pour cela, sélectionnez toutes les colonnes sauf la colonne ID.

Avertissement :

Les colonnes définies comme clés primaires ne peuvent pas et ne doivent pas être mises à jour.

  • Cochez la case Specify UPDATE WHERE clause et saisissez customer_info_merge.ID >= 4 entre guillemets doubles, dans le champ WHERE clause afin que seuls les enregistrements existants ayant un ID égal ou supérieur à 4 soient mis à jour.

  • Cochez la case Use INSERT puis définissez dans la table INSERT Columns les colonnes où les données seront prises et insérées.

    Pour ce scénario, tous les enregistrements qui n'existent pas dans la table cible sont insérés.

  • Sélectionnez l'onglet SQL Template pour afficher et ajouter les modèles SQL à utiliser.

    Par défaut, le composant SQLTemplateMerge utilise deux modèles SQL système : MergeUpdate et MergeInsert.

Remarque :

Dans l'onglet SQL Template, vous pouvez ajouter des modèles SQL système ou créer vos propres modèles et les utiliser dans votre Job pour effectuer des opérations codées. Pour plus d'informations, consultez Propriétés du tSQLTemplateFilterColumns Standard.

  • Cliquez sur le bouton Add pour ajouter une ligne, puis sélectionnez Commit dans la liste des modèles afin de commiter les résultats des opérations de MERGE dans votre base de données.

    Autrement, vous pouvez connecter le composant tSQLTemplateMerge à un tSQLTemplateCommit ou un tMysqlCommit à l'aide d'un lien Trigger > OnSubjobOk afin de commiter les résultats des opérations dans votre base de données.

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

    La console de la vue Run affiche à la fois le contenu d'origine de la table cible ainsi que les résultats des opérations de MERGE. Dans la table cible, les enregistrements No. 4 et No. 5 contiennent les informations mises à jour, tandis que les enregistrements No .6, No. 7 et No. 8 contiennent les informations insérées dans la table.