|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Conseil - Consultant en systèmes d'information Inscription : juillet 2011 Messages : 19 ![]() |
Bonjour,
Pour commencer, je vous préviens que je suis débutant, et sans formation, sur Talend. Je souhaite intégrer un flux RSS en base (MySQL) dans le quel le champs PUBDATE est au format String (ex: 30 Nov 2011 01:22:49 GMT). Mon objectif est d'en tirer le format timestamp qui est celui de la table visée. Cependant, je ne vois pas de convertisseur préfabriqué. Comment puis-je obtenir ce résultat là ? J'en suis actuellement rendu à l'obtention d'un string au format 30-11-2011 01:22:49 avec : Code :
TalendDate.formatDateLocale("dd-MM-yyyy HH:mm:ss",TalendDate.parseDateLocale("dd MMM yyyy HH:mm:ss 'GMT'",row1.PUBDATE,"EN"),"EN") |
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() Etienne MenuetInscription : mai 2010 Messages : 75 ![]() |
Bonjour,
Il n'y a pas de type timestamp dans Talend. Donc tu lis ta colonne source PUBDATE en String et tu la convertie en Date avec les fonctions Talend Date que tu maitrises ou en utilisant le composant tConvertType Le composant tMysqlOutput fera la conversion entre le type Date Java et timestamp Mysql. |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Conseil - Consultant en systèmes d'information Inscription : juillet 2011 Messages : 19 ![]() |
Bonjour,
Et merci ! J'ai utilisé la méthode que vous m'indiquez .. mais j'ai droit à une erreur : Impossible de convertir de Date en Int |
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() ![]() Mustapha EL HASSAKIngénieur développement logiciels Inscription : août 2009 Messages : 628 ![]() |
Salut,
J'ai fait un test et ça marche chez moi. Pour cela j'ai utilisé la routine suivante : Code :
Code :
Conversion.stringToDateTrois(row2.PUBDATE)
__________________
Le savant qui enseigne le bien aux gens et ne le met pas en pratique, est semblable à la torche qui éclaire en se brûlant. "Mohammed le Messager d’Allah" (que la paix et le salut d'Allah soient sur lui) Mes articles publiés |
||
|
|
10
|
|
|
#5 | ||
|
Invité de passage
![]() Conseil - Consultant en systèmes d'information Inscription : juillet 2011 Messages : 19 ![]() |
Merci pour cette réponse !
Je testerai ça dans le courant de la journée et ne manquerai pas de revenir vers vous pour clore ou relancer la discussion. EDIT : J'ai copié/collé le bout de code dans ma nouvelle routine : Code :
|
||
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() ![]() Mustapha EL HASSAKIngénieur développement logiciels Inscription : août 2009 Messages : 628 ![]() |
Est ce que tu peux envoyer le code complet de ta routine ?
__________________
Le savant qui enseigne le bien aux gens et ne le met pas en pratique, est semblable à la torche qui éclaire en se brûlant. "Mohammed le Messager d’Allah" (que la paix et le salut d'Allah soient sur lui) Mes articles publiés |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Conseil - Consultant en systèmes d'information Inscription : juillet 2011 Messages : 19 ![]() |
Heu ...
Le code complet est ci dessus, dans mon précédent message. J'ai simplement (et bêtement) copié/collé le code initial ... |
|
|
00
|
|
|
#8 | ||
|
Membre Expert
![]() ![]() Mustapha EL HASSAKIngénieur développement logiciels Inscription : août 2009 Messages : 628 ![]() |
il te faut la partie class dans ta classe de routine.
Essai de coller ce code complet dans ta routine. (tu modifieras le nom de la classe par le nom de la routine que tu as créé). Code :
__________________
Le savant qui enseigne le bien aux gens et ne le met pas en pratique, est semblable à la torche qui éclaire en se brûlant. "Mohammed le Messager d’Allah" (que la paix et le salut d'Allah soient sur lui) Mes articles publiés |
||
|
|
00
|
|
|
#9 | |
|
Invité de passage
![]() Conseil - Consultant en systèmes d'information Inscription : juillet 2011 Messages : 19 ![]() |
Citation:
Par contre, lors de l'import dans ma table MySQL, j'ai l'erreur suivante : Code :
DATA truncated FOR COLUMN 'cdate' at row 1 Le champ 'cdate' est, lui, en Int dans ma table. |
|
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() ![]() Mustapha EL HASSAKIngénieur développement logiciels Inscription : août 2009 Messages : 628 ![]() |
Normalement le type de la colonne cible (sur MySQL) est de type timeStamp dans la BD et de type Date sur le schéma Talend, pourquoi tu dis qu'il est de type Int ?
__________________
Le savant qui enseigne le bien aux gens et ne le met pas en pratique, est semblable à la torche qui éclaire en se brûlant. "Mohammed le Messager d’Allah" (que la paix et le salut d'Allah soient sur lui) Mes articles publiés |
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Conseil - Consultant en systèmes d'information Inscription : juillet 2011 Messages : 19 ![]() |
Dans la table, dont je ne suis pas l'auteur, le type du champs est Int, dans lequel la date est stockée en timestamp ...
Je vais me débrouiller dans la routine pour calculer la valeur de la date en timestamp et retourner un Int ... |
|
|
00
|
|
|
#12 |
|
Membre Expert
![]() ![]() Mustapha EL HASSAKIngénieur développement logiciels Inscription : août 2009 Messages : 628 ![]() |
A vrai dire je ne connais pas très bien la base MySql, mais comment un champs de type date peut il être stocker dans un colonne Int sous forme d'un TimeStamp ??
__________________
Le savant qui enseigne le bien aux gens et ne le met pas en pratique, est semblable à la torche qui éclaire en se brûlant. "Mohammed le Messager d’Allah" (que la paix et le salut d'Allah soient sur lui) Mes articles publiés |
|
|
00
|
|
|
#13 |
|
Invité de passage
![]() Conseil - Consultant en systèmes d'information Inscription : juillet 2011 Messages : 19 ![]() |
Ben j'avoue que je suis dépassé par le truc mais comme dit précédemment j'en suis pas l'auteur, et je ne peut me permettre de changer le type du champs de la table.
Mais a titre d'exemple : Dans le champs j'ai pour valeur : 1326788354 Qui correspond à la date 17/1/2012 à 9:19:14 La personne qui à conçu la table a jugé bon de typé le champs en Int ... malgré le type timestamp existant ... |
|
|
00
|
|
|
#14 | ||
|
Membre Expert
![]() ![]() Mustapha EL HASSAKIngénieur développement logiciels Inscription : août 2009 Messages : 628 ![]() |
Essai avec cette fonction :
Code :
__________________
Le savant qui enseigne le bien aux gens et ne le met pas en pratique, est semblable à la torche qui éclaire en se brûlant. "Mohammed le Messager d’Allah" (que la paix et le salut d'Allah soient sur lui) Mes articles publiés |
||
|
|
00
|
|
|
#15 |
|
Membre émérite
![]() Nicolas SaumandeArchitecte Décisionnel Inscription : février 2008 Messages : 693 ![]() |
Bonjour,
Est-ce que ça ne serait pas une valeur qui serait du genre le nombre de secondes écoulées depuis le premier janvier 1970... Il me semble que c'est pas mal utilisé dans les applis PHP. Voici comme j'ai traité le cas, en modifiant la requête qui récupère les valeurs : Code :
str_to_date('19700101', '%Y%m%d') + INTERVAL `MaTable`.`MaDate` SECOND |
|
|
00
|
|
|
#16 |
|
Invité de passage
![]() Conseil - Consultant en systèmes d'information Inscription : juillet 2011 Messages : 19 ![]() |
Il s'agit effectivement d'un appli en php, et du nombre de seconde écoulée depuis le 01/01/1970
Par contre je ne vois pas comment mettre en oeuvre ton bout de code ... |
|
|
00
|
|
|
#17 |
|
Membre émérite
![]() Nicolas SaumandeArchitecte Décisionnel Inscription : février 2008 Messages : 693 ![]() |
Si j'ai bien suivi, ta problématique est l'inverse de la mienne : tu souhaites alimenter un champ qui stock un timestamp sous la forme d'un entier.
Il faut donc que tu calcules la valeur de cet entier à partir de ton timestamp qui est sous la forme d'une date. Et ce calcul doit retourner le nombre de secondes entre ta date et le 1er janvier 1970, minuit. Je pense que tu peux faire cela en utilisant la fonction Talend : TalendDate.diffDate(myDate,myDate2,"ss") (Le "ss" à la fin indique que tu veux le résultat en seconde) Dans le myDate, tu mets le 1er janvier 1970, et dans le myDate2, tu mets ta date. Nicolas |
|
|
00
|
|
|
#18 | |||
|
Invité de passage
![]() Conseil - Consultant en systèmes d'information Inscription : juillet 2011 Messages : 19 ![]() |
Citation:
Par contre c'est codé sur 13 caractères, contre 10 dans ma base, les 3 caractère en plus n'étant que des 0. |
|||
|
|
00
|
|
|
#19 | ||
|
Invité de passage
![]() Conseil - Consultant en systèmes d'information Inscription : juillet 2011 Messages : 19 ![]() |
Problème résolu !!
Voici le code que j'utilise et qui fonctionne : Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com