OVH Cloud OVH Cloud

[Oracle] Caractère RC

2 réponses
Avatar
Roumegou
Bonjour,
un demi-bruit puisque j'ai besoin de regénérer une base Oracle
(structure et données) à partir d'une base mysql et ce par un prog
Windev
A l'origine, j'étais parti dans la transformation d'un mysqldump, mais
c'est beaucoup trop long.
J'ai donc une procédure qui génère donc maintenant un fichier de
contrôle pour le faire traiter par SQLLoader à partir d'une table
mySQL.
Cela contient la description lOAD DATA INFILE ... puis les DATAs
(BEGINDATA)
séparées par des , et enclosed by " pour les données non numériques.

Cela fonctionne bien à l'exception du cas des champs (type mémo) avec
RC.

Comment faut-il gérer ces scrogneugneu de RC ?

--
Eric Roumegou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)

2 réponses

Avatar
Roumegou
Il me manque pas grand chose. J'ai remplacé tous mes rn de mySQL en
une balise fictive <RC>. Comment remplacer <RC> par un OD OA dans
Oracle. En d'autre terme, quelle syntaxe SQL pour

Select REPLACE(Zone,'<RC>',??) FROM MATABLE
pour ?? j'ai essayé chr(13) + chr(10); '{13}{10}', 0x0D0x0A etc
mais c'est pas encore ça.

Il se trouve que Roumegou a formulé :
Bonjour,
un demi-bruit puisque j'ai besoin de regénérer une base Oracle (structure et
données) à partir d'une base mysql et ce par un prog Windev
A l'origine, j'étais parti dans la transformation d'un mysqldump, mais c'est
beaucoup trop long.
J'ai donc une procédure qui génère donc maintenant un fichier de contrôle
pour le faire traiter par SQLLoader à partir d'une table mySQL.
Cela contient la description lOAD DATA INFILE ... puis les DATAs (BEGINDATA)
séparées par des , et enclosed by " pour les données non numériques.

Cela fonctionne bien à l'exception du cas des champs (type mémo) avec RC.

Comment faut-il gérer ces scrogneugneu de RC ?



--
Eric Roumegou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Roumegou
Yes ! I've got it !
Des heures que je cherche cela sur le Net et si j'ai trouvé des posts
de personnes qui avaient les mèmes problèmes, je n'ai pas trouvé de
solutions.

Voilà la mienne s'il y'en a que cela interesse...
En fonction de la table mySQL, je génère une requête qui crée une ligne
concaténant tous les champs séparés par une ; et encadrés par un " pour
les
champs texte. Dans cette requete, je convertis les rn en <RC> par la
fn REPLACE.
Les données de cette requête sont écrits dans le fichier de control
après la description.
Le truc c'est de reconvertir RC par chr(3)+chr(10) au moment de
l'intégration par sqlloader avec ceci
ACT_COMM "replace(:ACT_COMM,'<RC>',CHR(13)||CHR(10))",

Car si on laisse les vrais rc, cela plante sqlloader.

Un exemple du fichier control généré par mon outil :
-- Génération d 'un fichier de contrôle SQLLoader par TOOL4US
-- à partir de la base mySQL
-- le 17/04/2004 à 16:00:22:07
--
-- TABLE : ACTION Actions
--
-- Pour executer votre sqlloader, veuillez taper sous Dos
-- SQLLDR user/
control=C:RAD4USSQLLOADERLOAD_ACTION.CTL
log=C:RAD4USSQLLOADERLOAD_ACTION.LOG
LOAD DATA
INFILE *
REPLACE
INTO TABLE ACTION
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
(ACT_ID,ACT_DESC,ACT_TYPE,ACT_AUTRE,
ACT_COMM "replace(:ACT_COMM,'<RC>',CHR(13)||CHR(10))",
ACT_DOCSRC,OPE_ID,LVL_ID,DATE_CREAT Date 'YYYY-MM-DD',LOGIN_CREAT,
DATE_MODIF Date
'YYYY-MM-DD',LOGIN_MODIF,SRC_CREAT,SRC_MODIF,REF_IMPORT)

BEGINDATA
1,"VAGUE 1",2,"","Envoi du 1er mailing (touches 100%) <RC>4usInfo
Libérez vous de toutes vos contraintes
informatiques","",39,186,"2004-02-08","CRM4US","2004-02-25","CRM4US","Saisie
depuis ACTION_FIC","Modifiée depuis ACTION_FIC",0
2,"VAGUE 2",2,"","Envoi du
mailing","",39,186,"2004-02-06","CRM4US","2004-02-08","CRM4US","Dupliquée
depuis ACTION_FIC","Modifiée depuis ACTION_FIC",0
3,"VAGUE 3",2,"","Envoi du
mailing","",39,186,"2004-02-06","CRM4US","2004-02-08","CRM4US","Dupliquée
depuis ACTION_FIC","Modifiée depuis ACTION_FIC",0
4,"CIBLE
ANNONCEURS",1,"","","",39,186,"2004-02-25","CRM4US","2004-02-25","","Saisie
depuis ACTION_FIC","",0

--
Eric Roumegou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)