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 :

Oracle Loader dans dbms_scheduler


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 23
    Par défaut Oracle Loader dans dbms_scheduler
    Bonjour,
    J'ai un fichier csv placé dans un chemin réseau tous les jours et que je dois intégrer dans une table oracle journalièrement.
    J'exécute la partie oracle_loader, cela marche très bien, mais j'ai des erreurs quand je l'injecte dans un job ! Les erreurs sont du style :

    ORA-06550: line ORA-06550: line 3, column 1: PLS-00103: Encountered the symbol "CREATE" when expecting one of the following: begin case declare exit for goto if loop mod null pragma raise return select update while with <an identifier> <a double-quoted delimited-identifier> <a bind variable> << close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge <a single-quoted SQL string> pipe <an alternatively-quoted SQL string> , column :

    Merci d'avance de votre aide

    Voici mon code :
    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
    begin
     
    CREATE OR REPLACE DIRECTORY indicateurs AS 'D:\oracle\indic';
    CREATE TABLE cdc (
    num NUMBER, 
    lib varchar2(255)
    )
    ORGANIZATION EXTERNAL
    (TYPE ORACLE_LOADER
    DEFAULT DIRECTORY indicateurs
    ACCESS PARAMETERS
    (
    RECORDS DELIMITED BY NEWLINE
    CHARACTERSET US7ASCII
    BADFILE indicateurs:'CentreCout.bad'
    LOGFILE indicateurs:'CentreCout.log'
    FIELDS TERMINATED BY ';'
    OPTIONALLY ENCLOSED BY '"'
    )
    LOCATION ('CentreCout.csv'))
    REJECT LIMIT UNLIMITED PARALLEL;
     
    commit;
    end;

  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
    Il y a un peu de confusion dans ce que tu essaie de faire. Bref la création du "directory" et de la table externe doit se faire une seule fois. Pour cela il convient de se connecter via sqlplus de s’assurer d’avoir les privilèges nécessaires et d’exécuter les commandes DDL une après l’autre et non pas via un bloc PL/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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    Connecté à :
    Oracle9i Enterprise Edition Release 9.2.0.5.0 - 64bit Production
    JServer Release 9.2.0.5.0 - Production
     
    SQL> CREATE OR REPLACE DIRECTORY indicateurs AS 'D:\oracle\indic';
     
    Répertoire créé.
     
    SQL> CREATE TABLE cdc (
    num NUMBER,
    lib varchar2(255)
    )
    ORGANIZATION EXTERNAL
    (TYPE ORACLE_LOADER
    DEFAULT DIRECTORY indicateurs
    ACCESS PARAMETERS
    (
    RECORDS DELIMITED BY NEWLINE
    CHARACTERSET US7ASCII
    BADFILE indicateurs:'CentreCout.bad'
    LOGFILE indicateurs:'CentreCout.log'
    FIELDS TERMINATED BY ';'
    OPTIONALLY ENCLOSED BY '"'
    )
    LOCATION ('CentreCout.csv'))
    REJECT LIMIT UNLIMITED PARALLEL;
      2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18
    Table créée.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 23
    Par défaut
    quand j'exécute le bloc oracle loader, ça marche très bien et j'ai ma table cdc qui est créée.
    Maintenant, ma question est comment programmer cette tâche via dbms_scheduler pour qu'elle s'exécute journalièrement ?

  4. #4
    Membre éclairé
    Inscrit en
    Novembre 2002
    Messages
    549
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 549
    Par défaut
    Citation Envoyé par ziko1310 Voir le message
    quand j'espère le bloc oracle loader, ça marche très bien et j'ai ma table cdc qui est créée.
    Maintenant, ma question est comment programmer cette tâche via dbms_scheduler pour qu'elle s'exécute journalièrement ?
    c'est au niveau OS que tu dois schéduler ton job et non au niveau du noyau Oracle

  5. #5
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    Citation Envoyé par PpPool Voir le message
    c'est au niveau OS que tu dois schéduler ton job et non au niveau du noyau Oracle
    Dans dbms_scheduler on peut lancer des batch ou scripts shell

    http://www.dba-oracle.com/t_running_..._scheduler.htm

    ou d'autres exemples de dbms_scheduler

    http://www.vegaitsystems.com/Blog/bi...DULER-Overview

    le plus facile est peut etre de passer par OEM

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 23
    Par défaut
    ok avec un Batch ! mais que doit faire ce batch ?
    J'utilise OEM pour écrire mes programmes.

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

Discussions similaires

  1. [Oracle] Dayname dans select
    Par Cupidon dans le forum Langage SQL
    Réponses: 3
    Dernier message: 05/05/2006, 14h03
  2. [PL/SQL Oracle] Syntaxe dans clause where
    Par Misdrhaal dans le forum Oracle
    Réponses: 2
    Dernier message: 01/03/2006, 13h33
  3. [VB6 et Oracle] Espace dans Oracle
    Par malhivertman1 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 17/02/2006, 16h02
  4. [Oracle] Probleme dans l'exécution de requetes
    Par Floverdoz dans le forum Bases de données
    Réponses: 10
    Dernier message: 14/06/2005, 18h03
  5. PL/SQL ORACLE (Record Dans un Varchar2)
    Par argoet dans le forum PL/SQL
    Réponses: 24
    Dernier message: 14/05/2004, 16h06

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