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

PL/SQL Oracle Discussion :

Erreur PLS-00103 avec LOAD DATA INFILE


Sujet :

PL/SQL Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 31
    Points : 19
    Points
    19
    Par défaut Erreur PLS-00103 avec LOAD DATA INFILE
    Bonjour,
    J'ai fait une recherche sur le sujet dans le forum PL/SQL mais je n'ai pas trouvé (ou ça ne m'a pas sauté aux yeux) de solutions à mon problème.

    J'ai le script sql suivant qui est appelé à partir d'une procédure en shell :

    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
     
    -- Codes erreurs Oracle pour quitter le programme des la premiere erreur rencontree
    WHENEVER SQLERROR EXIT 61
    WHENEVER OSERROR  EXIT 62
     
    BEGIN
    LOAD DATA 
      INFILE '/appli/SQL/Liste_ipp1.txt' 
      INTO TABLE LISTE_IPP1 
      LINES TERMINATED BY ',' (IPP1 VARCHAR2(6));
     
    -- Bloc d'exceptions
    EXCEPTION
      WHEN UTL_FILE.INVALID_PATH THEN
      dbms_output.put_line('Chemin Invalide');
      RAISE;
      WHEN OTHERS THEN
         RAISE;
    END;
    /
     
    QUIT
    Mon but est de remplir une table en base de données (LISTE_IPP1 qui n'existe pas encore) avec les données d'un fichier texte.
    Exemple :

    22,
    33,
    44,
    55,
    77,
    88,
    99,
    102,
    113,
    124,
    A l'éxécution du script sql, j'ai l'erreur suivante :

    SQL*Plus: Release 10.1.0.5.0 - Production on Jeu. Mars 15 15:24:10 2012

    Copyright (c) 1982, 2005, Oracle. All rights reserved.

    Connecté à :
    Oracle Database 10g Enterprise Edition Release 10.1.0.5.0 - 64bit Production
    With the Partitioning, OLAP and Data Mining options

    SQL> LOAD DATA
    *
    ERREUR à la ligne 8 :
    ORA-06550: Ligne 8, colonne 6 :
    PLS-00103: Symbole "DATA" rencontré à la place d'un des symboles suivants :
    := . ( @ % ;


    Déconnecté de Oracle Database 10g Enterprise Edition Release 10.1.0.5.0 - 64bit Production
    With the Partitioning, OLAP and Data Mining options
    S'agit-il d'un problème de syntaxe ou ai-je oublié quelque chose ?

    Merci pour votre aide.

    Cdlt,
    Olivier

  2. #2
    Expert éminent sénior 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
    Points : 11 252
    Points
    11 252
    Par défaut
    etc. ce sont des instructions à mettre dans un fichier de contrôle utilisé par un outil Oracle nommé sqlloader. Ces instructions sont incompréhensibles pour l’outil nommé sqlplus.
    Le plus simple sera d’utiliser les tables externes.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    J'ai essayé différemment mais j'ai encore une erreur.

    Voici ma démarche :

    - j'utilise un script shell (Lance_procedure.sh) pour appeler ma procédure SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    ##-------------------------------------
    ## Appel du script de création de la table
    ##-------------------------------------
    echo Appel du script de création de la table
     
    # Création de la table pour pouvoir compter le nombre d'occurrences à remplacer avant opération
    $ORACLE_HOME/bin/sqlplus / as sysdba<<EOF >> /appli/SQL/sqlplus.log 2>&1
    @/appli/SQL/Table_compteur_ipp1.sql
     
    exit;
    EOF
     
    echo Script de création terminé
    - ma procédure SQL est la suivante avec SIDOS le schéma de ma base de données :

    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
     
    -- Codes erreurs Oracle pour quitter le programme des la premiere erreur rencontree
    WHENEVER SQLERROR EXIT 61
    WHENEVER OSERROR  EXIT 62
     
     
    -- Table LISTE_IPP1
    -- Test de l existence de la table LISTE_IPP1: si cette table existe, on la supprime afin d en re-creer une a partir d enregistrements a jour
    DECLARE
    nbre Number;
    BEGIN
    -- Recherche l existence de la table
    SELECT count(*) into nbre FROM ALL_TABLES WHERE TABLE_NAME='LISTE_IPP1';
     IF (nbre=1) THEN
      EXECUTE IMMEDIATE 'DROP TABLE SIDOS.LISTE_IPP1 PURGE';
     END IF;
    END;
    /
     
    -- Valorisation de la variable 'FICH_IN'
    CREATE OR REPLACE directory FICH_IN AS '/appli/SQL';
     
    -- Droit donne au login sidos (permettant de se connecter au schéma SIDOS)
    GRANT READ, WRITE ON directory FICH_IN TO sidos;
     
    -- Creation de la table LISTE_IPP1 a partir du fichier texte Liste_ipp1
    CREATE TABLE SIDOS.LISTE_IPP1 (IPP1 VARCHAR2(6)) ORGANIZATION EXTERNAL (TYPE oracle_loader DEFAULT directory FICH_IN ACCESS PARAMETERS (RECORDS DELIMITED BY NEWLINE NOBADFILE NOLOGFILE FIELDS (IPP1 (1:6) CHAR))) LOCATION ('Liste_ipp1')) REJECT LIMIT unlimited;
     
    COMMIT;
     
    QUIT
    Dans la requête de création de la table, j'ai lu qu'il ne fallait pas préciser l'extension de mon fichier en entrée (en l'occurrence Liste_ipp1.txt).

    Par contre à l'exécution j'ai l'erreur suivante :

    SQL>
    Procédure PL/SQL terminée avec succès.

    Répertoire créé.

    Autorisation de privilèges (GRANT) acceptée.

    CREATE TABLE SIDOSMED.LISTE_IPP1 (IPP1 VARCHAR2(6)) ORGANIZATION EXTERNAL (TYPE oracle_loader DEFAULT directory FICH_IN ACCESS PARAMETERS (RECORDS DELIMITED BY NEWLINE NOBADFILE NOLOGFILE FIELDS (IPP1 (1:6) CHAR))) LOCATION ('Liste_ipp1.txt')) REJECT LIMIT unlimited
    *
    ERREUR à la ligne 1 :
    ORA-30648: mot-clé LOCATION absent
    Je ne vois pas où ça pêche, car j'ai déjà utilisé cette même requête il y a quelque temps sans avoir ce message d'erreur.

    Si quelqu'un pouvait m'éclaircir ou m'indiquer ce qui cloche...
    En vous remerciant par avance.

    Bonne soirée.

    Cdlt,
    Olivier

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    C'est bon, j'ai trouvé d'où venait mon erreur.

    Il y avait une parenthèse fermante de trop dans la syntaxe du CREATE TABLE, ce qui fait que le mot-clé LOCATION ne se trouvait pas avec les autres mots-clés de la procédure et du coup n'était pas interprété.

    Cdlt,
    Olivier

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

Discussions similaires

  1. Probléme avec load data infile
    Par Moez.B dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 31/08/2006, 10h01
  2. [MySQL] Problème avec LOAD DATA INFILE
    Par Pgs dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/07/2006, 15h33
  3. Mysql 5: difficulté avec load data infile
    Par koueletbak dans le forum Requêtes
    Réponses: 3
    Dernier message: 05/05/2006, 18h16
  4. probleme avec "LOAD DATA INFILE" et les b
    Par Koo dans le forum Requêtes
    Réponses: 2
    Dernier message: 01/07/2004, 09h37
  5. Problème avec LOAD DATA INFILE
    Par ka0z dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 04/06/2004, 14h59

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