Bonjour,
J'essaie de créer une table externe dont voici l'ordre DDL correspondant
Lorsque j'exécute la requête suivante
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 CREATE TABLE AGL_TICKET_ext ( TRT_ID NUMBER(22,0), TIC_ID NUMBER(22,0), ATTR_TP VARCHAR2(20), SIT_CD VARCHAR2(4), CAIS_CD VARCHAR2(3), TIC_CD VARCHAR2(20), VTE_NO NUMBER(22,0), REF_DT DATE, TIC_DT DATE, TIC_HEU VARCHAR2(8), OPE_ID VARCHAR2(20), CLI_ID NUMBER(22,0), PTS_NB NUMBER(22,0), POSTAL_CD VARCHAR2(5), DIVERS VARCHAR2(255), SESSION_ID NUMBER(22,0), CPT NUMBER(22,0), TIC_ORIG_NO VARCHAR2(20), CPT_ORIG NUMBER(22,0), FISCAL_NO VARCHAR2(30), UNITE_MON_PPALE VARCHAR2(4), GRP_CD VARCHAR2(2), COMP_ST NUMBER(3,0) ) ORGANIZATION EXTERNAL (TYPE ORACLE_LOADER DEFAULT DIRECTORY DIRECTORY_OUT ACCESS PARAMETERS ( RECORDS DELIMITED BY NEWLINE FIELDS LOAD WHEN (trt_id = 1527) TERMINATED BY ';' ENCLOSED BY '"' ( TRT_ID INTEGER EXTERNAL (22) , TIC_ID INTEGER EXTERNAL (22) , ATTR_TP CHAR , SIT_CD CHAR , CAIS_CD CHAR , TIC_CD CHAR , VTE_NO INTEGER EXTERNAL (22) , REF_DT CHAR(19) DATE_FORMAT DATE MASK "DD/MM/YYYY HH24:MI:SS" , TIC_DT CHAR(19) DATE_FORMAT DATE MASK "DD/MM/YYYY HH24:MI:SS" , TIC_HEU CHAR , OPE_ID CHAR , CLI_ID INTEGER EXTERNAL (22) , PTS_NB INTEGER EXTERNAL (22) , POSTAL_CD CHAR , DIVERS CHAR , SESSION_ID INTEGER EXTERNAL (22) , CPT INTEGER EXTERNAL (22) , TIC_ORIG_NO CHAR , CPT_ORIG INTEGER EXTERNAL (22) , FISCAL_NO CHAR , UNITE_MON_PPALE CHAR , GRP_CD CHAR , COMP_ST INTEGER EXTERNAL (22) )) LOCATION ('CN1#AGL_TICKET#OUT#20110405#TICK_AGILGCE.dat')) REJECT LIMIT UNLIMITED;
j'obtiens le message d'erreur suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part select * from AGL_TICKET_ext;
ORA-29913: error in executing ODCIEXTTABLEOPEN callout
ORA-29400: data cartridge error
KUP-00554: error encountered while parsing access parameters
KUP-01005: syntax error: found "load": expecting one of: "column, enclosed, exit, (, ltrim, lrtrim, ldrtrim, missing, notrim, optionally, rtrim, reject, terminated"
KUP-01007: at line 1 column 38
ORA-06512: at "SYS.ORACLE_LOADER", line 19
Or effectivement lorsque je retire la clause LOAD WHEN (trt_id = 1527) du ACCESS PARAMETERS, je n'ai plus le problème et cela fonctionne correctement.
Mais comme j'aimerai charger uniquement une partie des lignes du fichier en les filtrants sur le champ trt_id, cela n'arrangerai bien que cela fonctionne.
J'ai regardé la doc en ligne d'oracle sur les tables externe et cette clause LOAD WHEN doit bien faire partie du ACCESS PARAMETERS.
J'ai essayé de la mettre a différente position dans l'ACCESS PARAMETERS mais cela ne fonctionne pas.
voici le contenu du v$version
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production
TNS for Linux: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production
Merci pour votre aide
Partager