#1 Fri 04 October 2013 16:01
- Geo-x
- Participant assidu
- Lieu: Pau
- Date d'inscription: 2 Nov 2010
- Messages: 215
Clause WHERE
Bonjour @ tous,
je cherche une solution concernant la mise à jour d'une base destination à partir d'une base source à partir d'un champ commun entre les deux bases.
Je m'explique :
J'ai une table source qui contient deux champs : IDU / Bati
J'ai une table destination qui contient quatre champs : IDU / Bati / champ_autre1 / champ_autre2
J'ai ajouté, entre les deux tables, un transformer AttributeCreator contenant la clause where : "idu"='@Value(idu)'
J'ai ajouté à la table destination l'attribut de format fme_where
Je fais une connexion entre :
AttributeCreator.bati & table_destination.bati
AttributeCreator.where & table_destination.fme_where
Le problème, c'est que FME ne veut pas, dans sa requête, juste me mettre à jour le champ bati comme il me semble lui demander, mais il veut mettre à jour l'ensemble de la table et cela pose problème, notamment à cause des " ' " présents dans les champs_autre1 et champs_autre2.
Comment puis-je remédier à ce problème ?
Par avance merci de votre aide.
Geo-x
Hors ligne
#2 Mon 07 October 2013 09:02
Re: Clause WHERE
Salut, pour faire une mise à jour, il faut
1) Passer le paramètre du writer en update
2) Utiliser un Stringconcatenator où l'on renomme l'attribut de sortie en "fme_where"
3) Dans le stringconcatenator, il faut faire
a) valeur fixe : id='
b) Attribut : ton_attribut
c) Valeur fixe : '
Et tu lances le process.
Bon courage.
Loïc
Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com
Hors ligne
#3 Mon 07 October 2013 09:21
- Geo-x
- Participant assidu
- Lieu: Pau
- Date d'inscription: 2 Nov 2010
- Messages: 215
Re: Clause WHERE
Bonjour Loïc.
Merci de ta réponse mais malheureusmeent j'ai toujours ce souci, lié à la mise à jour de un ou plusieurs champs.
Comme je le précisais lors de mon post, FME, souhaite à tout pric mettre à jour l'ensemble des champs de ma base, alors que je lui demande de ne mettre à jour que les champs liés par des connecteurs.
Ce problème est d'autant plus gênant que vient s'ajouter à ça, le fait que la requête ne fonctionne pas du fait des caractères ' que ne prend pas la requête SQL générée par FME :
Code:
Error executing SQL command (...) RTE D\'ARMORIQUE (...): 'ERROR: syntax error at or near "ARMORIQUE"
Hors ligne
#4 Mon 07 October 2013 10:18
Re: Clause WHERE
C'est toi qui a mis les "\" ?
Pour mettre à jour que quelques champs : http://fmepedia.safe.com/articles/How_T … base-table
Dernière modification par heretik25 (Mon 07 October 2013 10:20)
Freelance traitements ETL FME certifié: www.sitdi-france.fr Twitter : @sitdifrance
Site perso ~ www.partir-en-vtt.com
Hors ligne
#5 Mon 07 October 2013 10:58
- Geo-x
- Participant assidu
- Lieu: Pau
- Date d'inscription: 2 Nov 2010
- Messages: 215
Re: Clause WHERE
Non ce n'est pas moi qu iai mis les "\" et le transformer AttributeRemover est déjà actif, j'ai tout enelver sauf deux champs!
Hors ligne
#6 Mon 07 October 2013 13:37
- Pierre
- DesCartesPourUnMondeMeilleur
- Date d'inscription: 22 Sep 2005
- Messages: 1643
Re: Clause WHERE
Bonjour,
Quel est le format en écriture ? Avez-vous la possibilité d'essayer avec un SQLExecutor (en passant une requête type UPDATE... SET... WHERE) ?
PS. Corrigez moi, mais l'attribut, est-ce IDU ou idu, et la casse a-t'elle une importance ?
Cordialement,
art X I. Déclaration des Droits de l’Homme et du Citoyen 1789
La libre communication des pensées et des opinions est un des droits les plus précieux de l’Homme : tout Citoyen peut donc parler, écrire, imprimer librement, sauf à répondre de l’abus de cette liberté, dans les cas déterminés par la Loi.
Hors ligne
#7 Mon 14 October 2013 13:50
- Geo-x
- Participant assidu
- Lieu: Pau
- Date d'inscription: 2 Nov 2010
- Messages: 215
Re: Clause WHERE
Bonjour Pierre,
finalement j'ai effectué mes modifications en créant une nouvelle table. J'ai ensuite effectué mes mises à jour directement depuis postgres.
Ceci étant dit, mon problème n'a fait qu'être contourné. Pour répondre à vos questions, le format d'écrituer est en UTF-8, l'ajout d'un transformer SQLExecutor est possible mais je préférerais éviter afin de simplifier le workbench et l'attribut est bin idu en minuscule.
Merci.
Hors ligne