Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > ETL > Talend
Talend Forum d'entraide sur Talend (Talend Open Studio, ...). Avant de poster --> FAQ Talend, Tutoriels Talend
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/10/2007, 16h00   #1
Invité de passage
 
Inscription : octobre 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 14
Points : 4
Points : 4
Par défaut [Talend]Champ Problème avec les type Date

Bonjour,
J'ai un problème avec des champs de type Date, J'essaie de copier les données d'une table SQL Server 2000 vers une autre SQL Server 2005 , dans les deux tables j'ai deux champs de type dateTime j'uitlise tMap pour filter les sorties. La copie se fait bien au départ mais le Job est interrompu par le message suivant :
Exception in component tMSSqlOutput_1
java.sql.SQLException: Only dates between January 1, 1753 and December 31, 9999 are accepted.
at net.sourceforge.jtds.jdbc.DateTime.packDate(DateTime.java:300)
at net.sourceforge.jtds.jdbc.DateTime.<init>(DateTime.java:121)
at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.setParameter(JtdsPreparedStatement.java:361)
at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.setTimestamp(JtdsPreparedStatement.java:757)
at migrationvplus.extractkalif.extractKalif.tMSSqlInput_1Process(extractKalif.java:568)
6219 milliseconds
at migrationvplus.extractkalif.extractKalif.runJob(extractKalif.java:813)
at migrationvplus.extractkalif.extractKalif.main(extractKalif.java:757)[/SIZE][/SIZE]


mais lorsque je vérifie les lignes de la table source je n'y trouve pas d'enregistrement avec une date suppérieure à 31/12/9999 ou inférieure à 01/01/1753. c'est peut être un pb de format de date?!! j'ai forrcé les format des dates dans le tMap et la composant output à "dd/mm/yyyy hh:mm". ça n'a pas résolu le problème, j'ai donc essayé de forcé le filtre du tMap en lui imposant de transférer même les date >"31/12/9999" :
row1.date_saisie>="31/12/9999" mais cette expression n'est pas acceptée dans tMap.

est ce que quelqu'un pourrait -il m'aider sur ce problème, je galère avec ça depuis le début de l'aprés midi?

Merci d'avance.
useretl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 13h58   #2
Nouveau Membre du Club
 
Inscription : juin 2006
Messages : 109
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 109
Points : 37
Points : 37
Bonjour,
Alors moi pour voir ce que ça donne en sortie, par exemple si le format en sortie est correct, je change temporairement ma sortie en la désactivant, puis je mets la sortie dans un tLogRow.


Comme ça tu verras ce qu'il te met en sortie, déjà si ça ressemble bien à al adte que tu lui donne en entrée!

Dis moi ce que ça donne.
lolotte35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2007, 14h41   #3
Membre du Club
 
Avatar de SebastienM
 
Inscription : juin 2007
Messages : 309
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 309
Points : 52
Points : 52
Essayes de mettre la pattern suivant sur tes champs de type date : "yyyy-MM-dd"

Pour le filtre, tu ne peux pas comparer des types date de cette manière : cf. doc java.

Voici un petit script php qui "patche" les métadonnées de talend. Si tu veux t'en servir, à toi de modifier les chemins correspondants (dans mon cas j'ai deux fichiers métadonnées pour deux connexions différentes) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
 
<html>
<head>
<title>PMI METADATA</title>
</head>
<body>
<?PHP
 
$file="C:\\PMI\\TOS-Win32-r5184-V2.1.2\\workspace\\PMI_STAT\\metadata\\connections\\stat_2.2.item";
$file2="C:\\PMI\\TOS-Win32-r5184-V2.1.2\\workspace\\PMI_STAT\\metadata\\connections\\pmi_2.2.item";
 
echo "<b>Fichier metadata </b>".$file."<br/>";
$contenu_meta="";
$handle = fopen ($file, "r");
$contenu_meta = fread ($handle, filesize ($file));
//echo "<textarea cols='150' rows='200'>".$contenu_meta."</textarea>";
fclose ($handle);
IF(ereg("pattern",$contenu_meta))
{
    echo "Impossible ; le fichier est déjà patché.<br/>";
}
else
{
$contenu_meta2=ereg_replace("sourceType=\"DATE\"","sourceType=\"DATE\" pattern=\""yyyy-MM-dd"\"",$contenu_meta);
$contenu_meta3=ereg_replace("sourceType=\"DATETIME\"","sourceType=\"DATE\" pattern=\""yyyy-MM-dd HH:mm:ss"\"",$contenu_meta2);
 
@unlink($file);
$fp=fopen($file,"w");
fputs($fp,$contenu_meta3);
fclose($fp);
echo "Ok.";
}
 
 
echo "<br /><b>Fichier metadata </b>".$file2."<br/>";
$contenu_meta="";
$handle = fopen ($file2, "r");
$contenu_meta = fread ($handle, filesize ($file2));
//echo "<textarea cols='150' rows='200'>".$contenu_meta."</textarea>";
fclose ($handle);
IF(ereg("pattern",$contenu_meta))
{
    echo "Impossible ; le fichier est déjà patché.<br/>";
}
else
{
$contenu_meta2=ereg_replace("sourceType=\"DATE\"","sourceType=\"DATE\" pattern=\""yyyy-MM-dd"\"",$contenu_meta);
$contenu_meta3=ereg_replace("sourceType=\"DATETIME\"","sourceType=\"DATE\" pattern=\""yyyy-MM-dd HH:mm:ss"\"",$contenu_meta2);
 
@unlink($file2);
$fp=fopen($file2,"w");
fputs($fp,$contenu_meta3);
fclose($fp);
echo "Ok.";
}
 
 ?>
 </body>
 </html>
SebastienM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2007, 10h23   #4
Invité de passage
 
Inscription : novembre 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 2
Points : 2
Points : 2
Par défaut problème des dates

bonjour,
en premier temps et pour connaitre la source de l'erreur je te conseille de lancer le job avec traces je veux savoir ou se produit l'exception exactement si au niveau du composant toutputXXX, là tu peux décocher la case die on error du composant et tu peux même faire une sortie rejets avec le bouton droits.
si ça se produit au niveau du tmap tu peux mettre un composant tschemacompliancechek qui va rejeter dans un autre flux toute les lignes qui respectent pas le format d'entrée, puisque moi je vois que l'erreur est certainement une valeur non conforme dans la table vu que le job commence à transférer les lignes.
leda3636 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h23.


 
 
 
 
Partenaires

Hébergement Web