Scénario 1 : Insérer des données dans des tables mère/fille

Composants Talend Open Studio Guide de référence

EnrichVersion
6.3
EnrichProdName
Talend Open Studio for Big Data
Talend Open Studio for ESB
Talend Open Studio for Data Quality
Talend Open Studio for MDM
Talend Open Studio for Data Integration
task
Gouvernance de données
Qualité et préparation de données
Création et développement
EnrichPlatform
Studio Talend

Le Job suivant est dédié à des utilisateurs avancés de base de données qui souhaitent effectuer des insertions dans des tables multiples à l'aide de l'id d'une table parent qui alimentera une table enfant.

Avant de créer ce Job, suivez les étapes décrites ci-dessous pour créer les tables nécessaires, à l'aide d'un gestionnaire de table tel que innodb.

  1. Dans un éditeur de ligne de commande, connectez-vous à votre serveur MySQL.

  2. Une fois connecté à la base de données correspondante, saisissez la commande suivante afin de créer la table parent :

    create table f1090_mum(id int not null auto_increment, name varchar(10), primary key(id)) engine=innodb;
  3. Puis créez la deuxième table :

    create table baby (id_baby int not null, years int) engine=innodb;

Dans le Studio Talend, le Job est constitué de sept composants, notamment un tMysqlConnection et un tMysqlCommit.

Construire le Job

  1. Cliquez et déposez les composants suivants de la Palette : un tFileList, un tFileInputDelimited, un tMap, un tMysqlConnection, un tMysqlCommit et deux tMysqlOutput.

  2. Connectez le composant tMysqlConnection au tFileList à l'aide d'une connexion de type OnComponentOk.

  3. Connectez le composant tFileList au tMysqlCommit à l'aide d'un lien OnComponentOk.

  4. Reliez le tFileList au tFileInputDelimited à l'aide d'un lien Iterate. Le nom du fichier à traiter est automatiquement renseigné depuis le répertoire du tFileList, grâce à une variable globale.

  5. Reliez le composant tFileInputDelimited au tMap et divisez le flux entre les deux composants Mysql de sortie. Utilisez un lien Row > Main pour chaque connexion, représentant le flux de données principal.

Configurer les composants

  1. Configurez les propriétés du tFileList, notamment le nom du répertoire duquel les fichiers vont être récupérés.

  2. Dans la vue Component du composant tMysqlConnection, définissez les informations de connexion manuellement ou récupérez-les dans le Repository si vous les avez préalablement stockées dans le dossier DB connection du répertoire Metadata. Pour plus d'informations concernant les Métadonnées, consultez le Guide utilisateur du Studio Talend.

  3. Dans l'onglet Basic settings du composant tFileInputDelimited, appuyez sur les touches Ctrl+Espace pour accéder à la liste des variables. Renseignez le champ File Name avec la variable globale : tFileList_1.CURRENT_FILEPATH

  4. Paramétrez les autres champs comme vous le souhaitez, définissez les séparateurs de lignes et de champs (Row et Field Separator) en fonction de la structure de votre document.

  5. Définissez manuellement le schéma du fichier à l'aide du bouton Edit schema ou sélectionnez le schéma dans le Repository. En version Java, assurez-vous que le type de données est correctement défini, conformément à la nature des données traitées.

  6. Dans la zone Output du tMap, ajoutez deux tables de sortie, une que vous nommerez mum pour la table parent et une deuxième que vous nommerez baby pour la table enfant.

    Cliquez sur la colonne Name de la zone Input et glissez-la dans la table mum.

    Cliquez sur la colonne Years de la zone Input et glissez-la dans la table baby.

  7. Assurez-vous que la table mum est bien au dessus de la table baby car l'ordre des tables détermine la séquence des flux et ainsi l'insertion de base de données est exécutée correctement.

    Sélectionnez une connexion de sortie de type Row pour acheminer correctement le flux vers le composant de sortie correspondant.

  8. Dans l'onglet Basic settings des deux composants tMysqlOutput, cochez la case Use an existing connection pour récupérer les informations du composant tMysqlConnection.

  9. Nommez votre table dans le champ Table en vous assurant que vous saisissez un nom pour la bonne table. Dans cet exemple, la table est soit f1090_mum, soit f1090_baby.

    Sélectionnez Insert dans le champ Action on data pour les deux composants de sortie (tMysqlOutput).

    Cliquez sur le bouton Sync columns pour récupérer le schéma défini dans le tMap.

  10. Dans la zone Additional columns de l'onglet Advanced settings du composant tMysqlOutput correspondant à la table enfant (f1090_baby), définissez la colonne id_baby de manière à ce que l'id de la table parent soit réutilisé.

  11. Dans le champ SQL expression, saisissez : '(Select Last_Insert_id())'

    Dans la colonne Position, sélectionnez l'option Before et dans Reference column, l'option years.

    Dans l'onglet Advanced settings, décochez la case Extend insert.

Exécuter le Job

  1. Appuyez sur les touches Ctrl+S pour enregistrer votre Job.

  2. Appuyez sur F6 pour l'exécuter.

L'id de la table parent a été réutilisé pour alimenter la colonne id_baby.