Bonjour,
Je dois insérer des tuples dans une base de données Oracle 9i.
Ces données comportent des champs de texte longs, pouvant fréquemment contenir des sauts de lignes (que je je peux constater d'ailleurs dans le script INSERT par des lignes vides ou des retours chariots).
Le hic, c'est que Oracle me retourne une erreur lors de l'exécution du script, car il me refuse les caractères genre "&" ou sauts de lignes. En fait, pour le saut de ligne, il considère que l'on passe à une commande suivante si il rencontre une ligne vide.
Comment faire donc, pour insérer ces données (car je veux conserver les caractères "&" et les retours de chariot) sans erreur ni perte (l'erreur empêche l'insertion du tuple incriminé) ??
Merci par avance... ;)
# BLOB....
Posté par Damien Metzler . Évalué à 2.
Il faut aussi faire attention que la gestion des BLOBs dans Oracle diffère en fonction de la version utilisée.
[^] # Re: BLOB....
Posté par Alexandre Dombrat . Évalué à 1.
En fait, j'ai juste des champs de 2000 caractères maxi, mais ils contiennent des caractères mal reconnus (ou réservés).
Pour passer le tout à Oracle, j'utilise le client SQL *Plus Worksheet de base...
# Utilise CHR
Posté par Philippe Makowski (site web personnel) . Évalué à 2.
pour & -> CHR(38)
[^] # Re: Utilise CHR
Posté par Alexandre Dombrat . Évalué à 1.
[^] # Re: Utilise CHR
Posté par Alexandre Dombrat . Évalué à 1.
Exemple:
INSERT INTO table (truc, machin) VALUES ('3', 'debutchaine' + CHR(38) + 'finchaine');
[^] # Re: Utilise CHR
Posté par gaaaaaAab . Évalué à 1.
mais dans la clause values d'un insert, t'y as pas droit.
tu peux contourner en faisant un
bon je dis ça pour parler de la concaténation de chaine, vu que pour virer les &, c'est plus simple de jouer sur le set define (cf ci dessous).
# sqlplus: set define off
Posté par gaaaaaAab . Évalué à 2.
Pour désactiver cette substitution, tu peux faire un
pour les retours chariots ... je ne sais pas trop.
[^] # Re: sqlplus: set define off
Posté par Alexandre Dombrat . Évalué à 1.
Maintenant, il me reste à trouver les sauts de ligne... Je pense que ça va se finir en remaniement des données "a la mano"... :(
[^] # Re: sqlplus: set define off
Posté par gaaaaaAab . Évalué à 1.
fonctionne.
[^] # Re: sqlplus: set define off
Posté par Alexandre Dombrat . Évalué à 1.
Pour reprendre ton exemple, ceci ne marche pas:
insert into tablee (bidule, machin)
values ('une ligne', 'deux
ligne');
La ligne vide est considérée comme un changement de commande, et il me répond qu'il ne connaît pas la commande ligne...
[^] # Re: sqlplus: set define off
Posté par gaaaaaAab . Évalué à 2.
bon, une solution qui marche chez moi:
un bon coup de sed pour traiter les lignes vides et c'est fini ! :)
[^] # Re: sqlplus: set define off
Posté par Alexandre Dombrat . Évalué à 1.
Il ne me reste plus qu'à chercher à remplacer les caractères Euro qui sont transformés en '?' par mon appli qui génère le script d'insertion...
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.