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 17/07/2007, 09h28   #1
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
Par défaut Talend - liaison et identifiant null

Bonjour,

J'ai remarqué que lorsque je fais un lien entre deux tables (demandeur, adresse) et que le champ de liaison demandeur.ID_ADRESSE est null, cela fait planter l'ETL.

Existe-t-il une solution pour contourner ce problème ?
SebastienM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2007, 10h48   #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,

as tu préciser dans le "shema type" de ton "input" et ton "output" que le champ adresse pouvait être null?
Il y a une case "nullable" cela veut dire que le champ à la permission d'être null.
lolotte35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2007, 11h31   #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
Oui, mais j'ai trouvé une solution : Il faut créer une contrainte IFNULL dans la requête SQL (base MySQL).

Voici un script PHP qui génère les requêtes :

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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<html>
<head>
<title>IFNULL SCRIPT</title>
</head>
<body>
<?PHP
 
//Serveur MySQL 
$serveur=""; 
//Utilisateur 
$user=""; 
//Mot de passe 
$password=""; 
//Base de donnée 
$db=""; 
 
 
$c = @mysql_connect($serveur,$user,$password) OR die("Connection impossible à MySQL");
@mysql_select_db($db,$c) OR die("Connexion à la base de données impossible"); 
?>
<form id="tt" method="POST" action="">
<div>
<SELECT name="tables">
<?PHP
// Liste des TABLES
$sql="SHOW TABLES;";
$req=mysql_query($sql);
while($res=mysql_fetch_array($req))
{
    echo "<option value=\"".$res[0]."\">".$res[0]."</option>\n";
}
?>
</select>
<input type="submit" value="Générer le script" />
</div>
</form>
<?PHP
 
IF(isset($_POST["tables"]))
{
 
$inFile="";
 
        //echo $res[0]."<br>";
        // Descriptif des champs
        $sql2="DESCRIBE ".$_POST["tables"].";";
        $req2=mysql_query($sql2);
        //$inFile.="INSERT INTO ".$res[0]." VALUES(";
        $str="\"SELECT ";
        echo $sql2;
        $i=0;
        while($res2=mysql_fetch_array($req2))
        {
            IF($res2[3]!="PRI")
            {
                IF(strtolower(substr($res2[0],0,3))=="id_")
                {
                    $str.="IFNULL(".$res2[0].",0) AS ".$res2[0].",";
                }
                else
                {
                    $str.=$res2[0].",";
                }
            }
            else
            {
                $str.=$res2[0].",";
            }
            $i++;
            IF($i==4){$str.="\n";$i=0;}
        }
        $str=substr($str,0,strlen($str)-1)." FROM ".$_POST["tables"]."\"";
        $str=str_replace(", FROM"," FROM",$str);
        $str=str_replace("FROM","\nFROM",$str);
 
       echo "<br /><hr /><br />Table ".$_POST["tables"]." :<br /><textarea rows=\"10\" cols=\"100\">".$str."</textarea>";
}
@mysql_close($c); 
 ?>
 </body>
 </html>
Il faut aussi insérer des valeurs fictives (id=0) dans chaque table.
Cordialement,
SebastienM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2007, 11h31   #4
Membre éclairé
 
Avatar de bouvda
 
Inscription : octobre 2005
Messages : 252
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2005
Messages : 252
Points : 312
Points : 312
Envoyer un message via MSN à bouvda
Bonjour,

j'ai eu ce problème plusieurs fois, il ne faut pas que la clé sur laquelle la jointure s'effectue soit Nullable.
bouvda est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h21.


 
 
 
 
Partenaires

Hébergement Web