tMysqlConnection - 6.3

Composants Talend Open Studio Guide de référence

EnrichVersion
6.3
EnrichProdName
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
task
Création et développement
Gouvernance de données
Qualité et préparation de données
EnrichPlatform
Studio Talend

Fonction

Le composant tMysqlConnection ouvre une connexion vers une base de données afin d'effectuer une transaction.

Objectif

Ce composant est utilisé pour ouvrir une connexion à la base de données spécifiée afin de pouvoir la réutiliser dans le(s) sous-job(s) suivant(s).

Propriétés du tMysqlConnection

Famille du composant

Databases/MySQL

 

Basic settings

Property type

Peut être Built-in ou Repository.

Depuis la version 5.6, les modes Built-In et Repository sont disponibles dans toutes les solutions de Talend.

 

 

Built-in : Propriétés utilisées ponctuellement.

 

 

Repository : Sélectionnez le fichier dans lequel sont stockées les propriétés du composant. Les champs suivants sont alors pré-remplis à l'aide des données collectées.

 

Host

Adresse IP du serveur de base de données.

 

Port

Numéro du port d'écoute du serveur de base de données.

 

Database

Nom de la base de données.

 

Table Schema

Nom du schéma.

 

Username et Password

Informations d'authentification de l'utilisateur de base de données.

Pour saisir le mot de passe, cliquez sur le bouton [...] à côté du champ Password, puis, dans la boîte de dialogue qui s'ouvre, saisissez le mot de passe entre guillemets doubles et cliquez sur OK afin de sauvegarder les paramètres.

 

Use or register a shared DB Connection

Cochez cette case pour partager votre connexion ou récupérer une connexion mise en partage dans un Job père ou un Job fils. Cette option vous permet de partager une seule connexion à une base de données dans plusieurs composants de connexion à des bases de données, dans différents niveaux de Jobs, qui peuvent être des Jobs parent ou enfant.

Avertissement

Cette option est incompatible avec les options Use dynamic job et Use an independent process to run subjob du composant tRunJob. Utiliser une connexion partagée avec un tRunJob ayant l'une de ces options activée fera échouer votre Job.

Shared DB Connection Name : définissez ou saisissez le nom de la connexion partagée.

 Specify a data source alias

Cochez cette case et spécifiez l'alias de la source de données créée dans Talend Runtime pour utiliser le pool de connexions partagées défini dans la configuration des données source. Cette option fonctionne lorsque vous déployez et exécutez votre Job dans Talend Runtime. Pour voir un exemple de cas d'utilisation, consultez Scénario 4 : Récupérer des données d'une base de données MySQL en utilisant la source de données côté Talend Runtime pour configurer la connexion à la base de données.

Advanced settings

Auto Commit

Cochez cette case afin de commiter automatiquement toute modification dans la base de données lorsque la transaction est terminée.

Lorsque cette case est cochée, vous ne pouvez utiliser les composants de commit correspondant pour commiter les modifications dans la base de données. De la même manière, lorsque vous utilisez un composant de commit, cette case doit être décochée. Par défaut, la fonctionnalité d'auto-commit est désactivée et les modifications doivent être commitées de manière explicite à l'aide du composant correspondant de commit.

Notez que la fonctionnalité d'auto-commit permet de commiter chaque instruction SQL comme transaction unique immédiatement après son exécution et que le composant de commit ne commite pas jusqu'à ce que toutes les instructions soient exécutées. Pour cette raison, si vous avez besoin de plus d'espace pour gérer vos transactions dans un Job, il est recommandé d'utiliser un composant Commit.

 

tStatCatcher Statistics

Cochez cette case pour collecter les métadonnées de traitement du Job au niveau du Job ainsi qu'au niveau de chaque composant.

Utilisation

Ce composant est généralement utilisé avec des composants MySQL, notamment les composants tMysqlCommit et tMysqlRollback.

Log4j

Si vous utilisez une solution Talend soumise à souscription, l'activité de ce composant peut être journalisée avec la fonctionnalité log4j. Pour plus d'informations sur cette fonctionnalité, consultez le Guide utilisateur du Studio Talend.

Pour plus d'informations sur les niveaux de logs du log4j, consultez la documentation d'Apache : http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html (en anglais).

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

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.

Scénario 2 : Partager une connexion de base de données entre un Job père et un Job fils

Ce scénario montre comment partager une connexion entre un Job père et un Job fils. Le Job père appelle le Job fils afin d'écrire des données aléatoires dans une base de données MySQL. Il lit ensuite les données depuis la base de données MySQL puis les affiche dans la console. La connexion à la base de données MySQL est configurée une seule fois et utilisée dans les deux Jobs.

Configurer le Job fils

Ajouter et relier les composants

  1. Ajoutez les composants suivants en saisissant leur nom dans l'espace de modélisation graphique ou en les déposant depuis la Palette :

    • un tMysqlConnection, afin d'ouvrir une connexion à la base de données MySQL,

    • un tRowGenerator, afin de générer des données d'entrée aléatoires,

    • un tMysqlOutput, afin d'écrire des données dans la base de données MySQL.

  2. Reliez le tRowGenerator au tMysqlOutput à l'aide d'un lien Row > Main.

  3. Reliez le tMysqlConnection au tRowGenerator à l'aide d'un lien Trigger > OnSubjobOk.

Configurer la connexion à la base de données

  1. Double-cliquez sur le tMysqlConnection afin d'ouvrir sa vue Basic settings.

  2. Dans la liste Property Type, sélectionnez Built-In puis configurez les détails de connexion dans les champs appropriés, dont :

    • le nom d'hôte ou l'adresse IP de votre serveur de base de données (Host),

    • le numéro du port d'écoute (Port),

    • le nom de la base de données (Database),

    • le nom d'utilisateur (Username) et le mot de passe (Password) pour l'identification à la base de données.

    Si vous avez stocké les informations de connexion sous le nœud Metadata du Repository, vous pouvez déposer ces métadonnées centralisées sur le composant tMysqlConnection. Pour plus d'informations concernant la centralisation d'une connexion à une base de données, consultez le chapitre sur la gestion des métadonnées dans le Guide utilisateur du Studio Talend.

  3. Cochez la case Use or register a shared DB Connection afin que la connexion à la base de données ouverte par ce composant puisse être partagée entre les différents Jobs. Ensuite, dans le champ Shared DB Connection Name, saisissez un nom pour la connexion partagée, entre guillemets doubles, shared_mysql_connection dans cet exemple.

Configurer les données d'entrée

  1. Double-cliquez sur le composant tRowGenerator afin d'ouvrir l'éditeur Row Generator.

  2. Cliquez sur le bouton [+] afin d'ajouter quatre colonnes puis définissez leurs propriétés comme suit :

    • id, de type Integer et d'une longueur de 2 caractères,

    • firstName, de type String et d'une longueur de 15 caractères,

    • lastName, de type String et d'une longueur de 15 caractères,

    • city, de type String et d'une longueur de 15 caractères.

  3. Définissez la fonction de chaque colonne :

    • Pour la colonne id, sélectionnez Numeric.sequence dans la liste Function afin de générer des séquences de nombres.

    • Pour la colonne firstName, sélectionnez TalendDataGenerator.getFirstName dans la liste Function afin de générer des prénoms de manière aléatoire.

    • Pour la colonne lastName, sélectionnez TalendDataGenerator.getLastName dans la liste Function pour générer des noms de famille de manière aléatoire.

    • Pour la colonne city, sélectionnez TalendDataGenerator.getUsCity dans la liste Function pour générer des noms de ville de manière aléatoire.

  4. Dans le champ Number of Rows for RowGenerator, précisez le nombre de colonnes de données que vous souhaitez générer, 10 dans cet exemple.

  5. Cliquez sur le bouton Preview de l'onglet Preview afin de valider les paramètres du générateur.

  6. Une fois les paramètres validés, cliquez sur OK afin de fermer l'éditeur. Dans la boîte de dialogue qui s'affiche, cliquez sur Yes afin de propager les changements au composant suivant.

Configurer la sortie de la base de données

  1. Double-cliquez sur le tMysqlOutput afin d'ouvrir sa vue Basic settings.

  2. Cochez la case Use an existing connection et, si vous avez plus d'un composant de connexion dans ce Job, sélectionnez le composant de connexion à utiliser dans la liste Component List.

  3. Dans le champ Table, saisissez le nom de la table de base de données dans laquelle les données sont écrites, customers dans cet exemple.

  4. Dans la liste Action on table, sélectionnez l'option Drop table if exists and create afin de vous assurer de la création d'une table vide.

  5. Dans la liste Action on data, sélectionnez Insert.

  6. Cliquez sur le bouton [...] à côté du champ Edit schema afin de vérifier la propagation du schéma de sortie. Si besoin, cliquez sur Sync columns afin de récupérer le schéma depuis le composant précédent.

  7. Appuyez sur Ctrl+S afin de sauvegarder votre Job.

Configurer le Job père

Ajouter et relier les composants

  1. Ajoutez les composants suivants en saisissant leur nom dans l'espace de modélisation graphique ou en les déposant depuis la Palette :

    • un tRunJob, afin d'appeler le Job fils,

    • un tMysqlConnection, afin d'ouvrir la connexion à la base de données MySQL,

    • un tMysqlInput, afin de lire les données écrites dans la base de données MySQL par le Job fils,

    • un tLogRow, afin d'afficher les données dans la console,

    • un tMysqlCommit, afin de commiter les données lors de la transaction et fermer la connexion à la base de données.

  2. Reliez le tRunJob au tMysqlConnection à l'aide d'un lien Trigger > OnSubjobOk.

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

  4. Reliez le tMysqlInput au tLogRow à l'aide d'un lien Row > Main.

  5. Reliez le tMysqlInput au tMysqlCommit à l'aide d'un lien Trigger > OnSubjobOk.

Configurer les composants

  1. Double-cliquez sur le tRunJob afin d'ouvrir sa vue Basic settings.

    Si un Job fils a déjà été défini pour le composant, vous pouvez cliquer-droit sur le composant et sélectionner Settings dans le menu contextuel afin d'ouvrir la vue Basic settings. Vous pouvez également cliquer sur le composant et sélectionner l'onglet Component.

  2. Cliquez sur le bouton [...] à côté du champ Job et sélectionnez le Job fils dans la boîte de dialogue [Repository Content]. Laissez tous les autres paramètres tels qu'ils sont.

  3. Dans la vue Basic settings du composant tMysqlConnection, cochez la case Use or register a shared DB Connection. Ensuite, dans le champ Shared DB Connection Name, saisissez le nom de la connexion partagée définie dans le Job fils, shared_mysql_connection dans cet exemple.

    Laissez les autres paramètres vides ou tels qu'ils sont.

  4. Double-cliquez sur le tMysqlInput afin d'ouvrir sa vue Basic settings.