OVH Cloud OVH Cloud

Pb échappement ' mais pas ' sur SGBD

1 réponse
Avatar
Sébastien Cottalorda
Bonjour à tous,

Je dois "synchroniser" 2 SGBDs différentes.

Pour cela:
- Je droppe la table destinatrice,
- Je recrée la table avec la même définition (clés, index, etc..)
- J'effectue un select d'un côté,
- J'insert les datas dans la table destinatrice fraichement crée.
Pas la peine de philosopher sur la méthode la plus appropriée pour
synchroniser 2 SGBD, ce n'est pas l'objet de ma question.

Lors du select, certains champs textuels contiennent des ' et d'autres
des \'.
Comme vous vous en doutez, l'insertion plante car si j'échappe
systématiqueùment les ', j'obtiens \' et \\'

Comment puisque effectuer l'échappement que des ' sans toucher aux \' ?

Merci d'avance de votre aide.

Sébastien

1 réponse

Avatar
Paul Gaborit
À (at) Wed, 21 Jun 2006 12:05:06 +0200,
Sébastien Cottalorda écrivait (wrote):
Bonjour à tous,
Je dois "synchroniser" 2 SGBDs différentes.


Pour cela:
- Je droppe la table destinatrice,
- Je recrée la table avec la même définition (clés, index, etc..)
- J'effectue un select d'un côté,
- J'insert les datas dans la table destinatrice fraichement crée.
Pas la peine de philosopher sur la méthode la plus appropriée pour
synchroniser 2 SGBD, ce n'est pas l'objet de ma question.

Lors du select, certains champs textuels contiennent des ' et d'autres
des '.
Comme vous vous en doutez, l'insertion plante car si j'échappe
systématiqueùment les ', j'obtiens ' et '

Comment puisque effectuer l'échappement que des ' sans toucher aux ' ?


Les solutions de la meilleure à la pire (de mon point de vue) :

- Demandez-vous si ces champs textuels doivent réellement contenir
la séquence '. C'est tout de même assez rare dans du texte...

- Utilisez les placeholders de DBI : il fera le travail pour vous.

- Ajoutez un échapement aux backslashs (qui deviennent donc )
avant d'échapper les apostrophes.

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
Perl en français - <http://perl.enstimac.fr/>