Bonjour,
Environment : Talend V2.4.1 Postgresql MySQL
J'ai une table HIST qui historise toutes les exécutions de job (date d'exécution, ...). Remplissage de la table HIST avec un tStatCatcher.
Dans un job X, je souhaite charger les données dont la date de dernière mise à jour est supérieure à la date contenue dans la table HIST.
Pour cela, j'ai :
tPostgresqlInput ---Main---tJavaRow---OnComponentOK----tMySqlInput
Le composant tPostgresqlInput contient :
select * from "HIST" where "type_msge" = 'end' and "msge" = 'success'
order by "date" DESC LIMIT 1
Le composant tJavaRow contient :
context.dateComparaison=row1.date.toString();
System.out.println(context.dateComparaison);
System.out.println(ConvDate.convertDate(context.dateComparaison));
context.dateComparaison est de type String
System.out.println(context.dateComparaison) donne Tue Sep 09 16:06:26 CEST 2008
System.out.println(ConvDate.convertDate(context.dateComparaison)) donne 2008-09-09
La routine ConvDate contient :
package routines;
import java.text.SimpleDateFormat;
import java.text.ParsePosition;
import java.util.Locale;
public class ConvDate {
public static String convertDate(String ladate){
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.US);
SimpleDateFormat sdff = new SimpleDateFormat("yyyy-MM-dd", Locale.US);
return sdff.format(sdf.parse(ladate,new ParsePosition(0)));
}
}
Le composant tMysqlInput contient :
select *
from tableA
where date > '"+ConvDate.convertDate(context.dateComparaison)+"';
PROBLEME : Le job charge toutes les lignes.
Si je mets :
select *
from tableA
where date > '2008-09-09';
C'est bon. Seules les lignes correspondant à cette date sont chargées.
Why ???
MERCI BEAUCOUP pour votre aide.
Inspiré des échanges entre SebastienM et bouvda du 05/03/2008 que je remercie.
Cordialement.
Partager