|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : juin 2007 Messages : 309 ![]() |
Bonjour,
j'aurais voulu avoir confirmation que les scripts perl/java exportés avec talend sont compatibles linux. Merci. |
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() |
Bonjour,
les scripts perl/java exportés avec Talend sont compatibles Linux, il suffit juste d'avoir perl ou une machine virtuelle Java pas trop vieille installés. D'ailleurs, dans la boîte de dialogue d'export d'un job, il est possible de choisir pour quel type d'OS générer les scripts : Windows et/ou Unix. |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : juin 2007 Messages : 309 ![]() |
Génial ! (c'est d'ailleurs tout l'intérêt de java). Merci.
|
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : juin 2007 Messages : 309 ![]() |
J'ai une autre petite question :
Je voudrais copier le contenu d'une table dans une autre (même structure). Pour cela, j'ai 3 composants : tMySQLInput, tMap, tMysqlOutput le problème et que je n'arrive à lister les champs uniquement dans le composant tMySQLInput, donc impossible de faire les liens. J'ai raté quelque chose ? J'ai déjà travaillé sur DataStage, et Talend semble être un excellent produit OpenSource. |
|
|
00
|
|
|
#5 |
|
Membre éclairé
![]() |
Si les champs peuvent être listés dans le composant tMySQLInput alors avec la démarche suivante, cela devrait fonctionner :
->éditer le schéma du tMySQLInput ->éditer la requête du MySQLInput ->clic droit sur tMySQLInput -> Row -> Main ->relier au composant tMap ->clic droit sur tMap -> Row -> New Output ->nommer cette liaison ->relier au composant tMySQLOutput ->double clic sur le composant tMap pour ouvrir l'éditeur ->glisser déposer les champs de l'entrée vers la sortie Si la table de destination a exactement la même structure que la table source(même nom de colonnes et dans le même ordre) alors le composant tMap est ici inutile. |
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Inscription : juin 2007 Messages : 309 ![]() |
[edit] c'est bon en fait je n'avais aps créé de metadata ^^
Merci de votre réponse, mais il y a un truc que je ne comprends pas : Il fait saisir à la main tous les champs / clés primaires / types ??? parce que j'ai plus de 600 champs au total... |
|
|
00
|
|
|
#7 |
|
Membre éclairé
![]() |
J'en ai bien peur si toutes les propriétés sont du type Built-In mais je n'en suis pas certain à 100%.
Enfin pour la requête il y a l'éditeur graphique qui permet de le faire assez vite par contre pour le schéma je pense qu'il faudra le faire tout seul manuellement. Par contre en Repository il n'y a pas besoin de tout saisir manuellement car Talend peut détecter les tables et leurs champs d'une base de données automatiquement. Pour cela il faut aller dans Metadata, Db Connections et créer une connexion à la base souhaitée. Une fois la connexion créée, il faut faire un clic droit dessus puis Retrieve Schema. Ainsi, en mettant les propriétés sur Repository, il n'y aura pas besoin de saisir le schéma manuellement. |
|
|
00
|
|
|
#8 |
|
Membre du Club
![]() Inscription : juin 2007 Messages : 309 ![]() |
Merci beaucoup de votre réponse.
j'ai réussi et pour l'instant tout va bien Maintenant je voudrais transférer uniquement les ID > 3 J'ai ajouté dabs le tMap un "filter condition" et j'ai saisis à l'intérieur row1.ID_SOURCE=3 Il m'affiche alors : Error on row1.ID_SOURCE : Type mismatch. cannot convert from Int to boolean. Mais je ne veux pas le convertir en booléen moi ! ^^ Je n'ai rien trouvé à ce sujet dans la doc, mis à part qu'il fallait respecter la syntaxe du langage choisi (ici java). |
|
|
00
|
|
|
#9 |
|
Membre éclairé
![]() |
Je ne sais pas si le problème vient de cela mais en tout cas il y a une erreur de syntaxe car l'opérateur d'égalité n'est pas '=' mais '=='.
|
|
|
00
|
|
|
#10 |
|
Membre du Club
![]() Inscription : juin 2007 Messages : 309 ![]() |
Super, j'ai bien avancé.
En revanche, est-on obligé de créer un tMySQLInput par table ? Peut-on sauvegarder la configuration, pour la réutiliser dans ce cas ? (car si on a 50 tables et que le mot de passe change, il faut refaire tous les tMySQL Input / output) Merci. EDIT : J'ai répondu tout seul à ma question ^^ possible via le repisotory |
|
|
00
|
|
|
#11 |
|
Membre du Club
![]() Inscription : juin 2007 Messages : 309 ![]() |
Est-il possible de faire un rollback en cas d'erreur ?
|
|
|
00
|
|
|
#12 |
|
Membre éclairé
![]() |
Très bonne question car c'est une fonctionnalité des plus importantes à mon sens.
je cherche également à le faire malheureusement je ne pense pas que dans la version actuelle de Talend cela soit possible à moins de tenter de développer soi-même un composant le permettant, ce qui risque d'être assez ardu vu que les développeurs ne l'ont toujours pas fait et qu'ils ne l'avaient déjà pas fait dans la version 1 car c'était difficile à implémenter (cf le forum officiel). |
|
|
00
|
|
|
#13 |
|
Membre du Club
![]() Inscription : juin 2007 Messages : 309 ![]() |
Existe-t-il d'autres outils ETL OpenSource qui permettraient de réaliser cette opération ?
Je suis en train de créer un tableau comparatif des différents outils ETL OpenSource (pour l'instant Octopuss, Talend, Clover.ETL) |
|
|
00
|
|
|
#14 |
|
Membre éclairé
![]() |
J'ai également testé Kettle mais je ne me souviens pas qu'il permet de le faire. Je ne pense pas qu'il existe beaucoup d'outils ETL Open Source le permettant
Vous devriez peut-être poser la question dans un nouveau post avec un titre évocateur pour obtenir plus de réponses. [EDIT] Une bidouille consisterait à mettre un nombre de lignes très grand dans la propriété Commit every (dans Talend ou dans Kettle). Mais ce n'est pas très élégant et il faut être sûr d'avoir moins de lignes à transférer que la valeur affectée à la propriété. |
|
|
00
|
|
|
#15 | |
|
Membre du Club
![]() Inscription : juin 2007 Messages : 309 ![]() |
D'après la doccumentation Fr, voici ce que j'ai pu retirer du "Commit every" :
Citation:
|
|
|
|
00
|
|
|
#16 | |
|
Membre émérite
![]() ![]() |
Citation:
|
|
|
00
|
|
|
#17 |
|
Membre du Club
![]() Inscription : juin 2007 Messages : 309 ![]() |
Est-il possible de vider les tables MySQL dans un job (truncate), mais sans insertion ?
J'ai réussi à la faire via un script sql et un launcher bat, mais ce n'est pas très pratique (nécessite la présence des binaries MySQL). |
|
|
00
|
|
|
#18 |
|
Membre éclairé
![]() |
Il faut utiliser le composant tMySqlRow avec lequel on peut saisir n'importe quelle requête (non paramétrée cependant, bien qu'il est très facile de modifier un tel composant pour pouvoir faire des requêtes paramétrées).
|
|
|
00
|
|
|
#19 |
|
Membre du Club
![]() Inscription : juin 2007 Messages : 309 ![]() |
Merci e votre réponse, effectivement cela fonctionne bien, mais est-il possible de vider plusieurs tables avec un seul composant ?
|
|
|
00
|
|
|
#20 |
|
Membre éclairé
![]() |
Je n'ai jamais essayé mais peut-être qu'en enchaînant les requêtes dans la propriétés Query du composant on pourrait vider plusieurs tables. Avez-vous essayé ?
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com