Bonjour,
J'ai comme actuel mandat de transferer des Tables d'Access vers nos environnements Oracles.
Je me suis dit qu'une façon propre et simple de le faire serais par procèdure SQL en exportant chaque table sous format .csv .
Malheureusement je suis confronter à un petit (gros) problème.
L'une des tables d'Access est de type "Mémo" déjà la j'ignore l'équivalence de Mémo en Oracle , mais j'ai mis le récepteur de se champs en Varchar2(2000).
Le lien entre ma table externe et le fichier .cvs se fait sans problème pour quasiment toute les lignes saufs celles qui contiennent des données dans les champs Mémo car ils ont des sauts de lignes.
Exemple du contenue fichier test.csv
01;Nom;Cette personne est grande
Fonctionne très bien.
[B]02;Nom2;Cette personne est
de taille moyenne
et est jolie.
La 3ème colonne de ma table ne contient que Cette personne est tout le laisse est ignoré .
Voici le code de ma procèdure.
J'ai essayé de changer le RECORDS DELIMITED BY NEWLINE en RECORDS DELIMITED BY ''ƒ'' et ajouter un ƒ à la fin de toute mes enregistrements et c'est encore pire car il ne lis cette fois qu'une seule ligne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 CREATE OR REPLACE PROCEDURE P_LOAD_EXT_TABLE ( v_Fichier IN VARCHAR2, v_Table IN VARCHAR2, v_Colonne IN VARCHAR2 ) IS v_Dossier VARCHAR2 (10) := DYN_DATA'; BEGIN EXECUTE IMMEDIATE 'CREATE TABLE '||v_Table||' ( '||v_Colonne||' ) ORGANIZATION EXTERNAL ( TYPE oracle_loader DEFAULT DIRECTORY '||v_Dossier||' ACCESS PARAMETERS ( RECORDS DELIMITED BY NEWLINE FIELDS TERMINATED BY '';'' MISSING FIELD VALUES ARE NULL ) LOCATION ('''||v_Fichier||''') ) REJECT LIMIT UNLIMITED PARALLEL ( DEGREE DEFAULT INSTANCES DEFAULT ) NOMONITORING'; EXCEPTION WHEN OTHERS THEN BEGIN DBMS_OUTPUT.put_line ('Erreur Oracle: ' || SQLERRM); END; END;
Quelqu'un aurait-il une idée ?
Je vous remercie à l'avance.
Ps : J'ignore si j'ai posté ma question dans la bonne section , j'espère que oui.
Partager