Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/04/2011, 16h45   #1
Invité régulier
 
Inscription : juin 2009
Messages : 8
Détails du profil
Informations personnelles :
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : juin 2009
Messages : 8
Points : 8
Points : 8
Par défaut table externe + clause LOAD WHEN

Bonjour,

J'essaie de créer une table externe dont voici l'ordre DDL correspondant
Code :
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;
Lorsque j'exécute la requête suivante

Code :
SELECT * FROM AGL_TICKET_ext;
j'obtiens le message d'erreur suivant :

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
karlogod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2011, 17h20   #2
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 808
Points : 5 808
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
...
 Access Parameters
 (
  Records delimited BY newline
  Badfile 'mni_trace.bad'
  Discardfile 'mni_trace.dis'
  Logfile 'mni_trace.log'
  characterset us7ascii  
  LOAD When (text_line != 'BINDS #2:')
  FIELDS  
...
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/04/2011, 09h39   #3
Invité régulier
 
Inscription : juin 2009
Messages : 8
Détails du profil
Informations personnelles :
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : juin 2009
Messages : 8
Points : 8
Points : 8
bon, il semble qu'il soit necessaire de mettre tout les parametres quand on utilise la LOAD WHEN

Merci
karlogod est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h55.


 
 
 
 
Partenaires

Hébergement Web