IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

table externe + clause LOAD WHEN


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Par défaut table externe + clause LOAD WHEN
    Bonjour,

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 5 611
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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  
    ...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juin 2009
    Messages : 20
    Par défaut
    bon, il semble qu'il soit necessaire de mettre tout les parametres quand on utilise la LOAD WHEN

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème pour lire les donnée d'une table externe
    Par mardoch dans le forum SQL*Loader
    Réponses: 6
    Dernier message: 17/07/2008, 16h41
  2. Import massif/table externe et real
    Par Eric Sibert dans le forum Firebird
    Réponses: 7
    Dernier message: 30/08/2005, 10h13
  3. [MCD]Modeliser Table externe à la base de données
    Par bossun dans le forum Schéma
    Réponses: 4
    Dernier message: 27/06/2005, 15h43
  4. [ORACLE 9i] Tables externes
    Par sygale dans le forum Oracle
    Réponses: 3
    Dernier message: 22/12/2004, 15h24
  5. [ORACLE 9i] tables externes et Skip column
    Par sygale dans le forum SQL
    Réponses: 7
    Dernier message: 17/11/2004, 05h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo