banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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

Loic_GR
Moderateur
Lieu: Besancon
Date d'inscription: 12 May 2011
Messages: 1025
Site web

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

Loic_GR
Moderateur
Lieu: Besancon
Date d'inscription: 12 May 2011
Messages: 1025
Site web

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

 

Pied de page des forums

Powered by FluxBB