Accéder au contenu principal

Effectuer des opérations de MERGE directement dans le SGBD

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 ou de l'utilisatrice 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 de 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.

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

  • Reliez 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.

  • Reliez le premier tMysqlInput au composant tSQLTemplateMerge et le tSQLTemplateMerge au second composant tMysqlInput à l'aide de liens Trigger > OnSubjobOk.

  • Reliez 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 d'utilisation 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 le dossier 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.

Note InformationsRemarque :

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 et des utilisatrices. Pour cela, sélectionnez toutes les colonnes sauf la colonne ID.

Note InformationsAvertissement :

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.

Note InformationsRemarque :

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 lier 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.

Cette page vous a-t-elle aidé ?

Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – faites-le-nous savoir.