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

Oracle Discussion :

SQL*LOADER - Requete dans le fichier de controle


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de VinceTlse
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 163
    Par défaut SQL*LOADER - Requete dans le fichier de controle
    Bonjour,
    Je désirais savoir s'il était possible de passer une requete dans le fichier controle pour SQL*LOADER.
    Pour l'insatant j'ai ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    LOAD DATA INFILE 'dossier_data.csv'
    REPLACE
    INTO TABLE DOSSIER
    FIELDS TERMINATED BY ';'
    TRAILING NULLCOLS 
    (
       DOSSIER_ID "SEQ_DOSSIER.nextval",
       CODE_CLIENT,
       CAMPAGNE_ID INTEGER EXTERNAL
    )
    Et j'aimerais quelque chose comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    LOAD DATA INFILE 'dossier_data.csv'
    REPLACE
    INTO TABLE DOSSIER
    FIELDS TERMINATED BY ';'
    TRAILING NULLCOLS 
    (
       DOSSIER_ID "SEQ_DOSSIER.nextval",
       CODE_CLIENT,
       CAMPAGNE_ID "SELECT MAX(CAMPAGNE_ID) FROM CAMPAGNE"
    )
    Mon but est de ne pas à avoir à renseigner le CAMPAGNE_ID dans mon fichier de données.
    Je travaille sous Oracle 9i
    Merci d'avance.

    Vincent

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 36
    Par défaut
    Je ne comprend pas trés bien le lien entre DOSSIER et CAMPAGNE.
    Est-ce qu'une séquence ne répondrait pas a tes pb?

    Mais as tu essayer le fichier tel que décrit?

  3. #3
    Membre expérimenté Avatar de VinceTlse
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 163
    Par défaut
    Un dossier appartient à une campagne. Il s'agit d'une foreign key.
    J'ai besoin de connaitre l'id de la campagne la plus récente afin de l'incérer dans la table dossier.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 36
    Par défaut
    La seul maniere de faire pour l'instant c de créer un fonction ou une procédure qui retournera le maximum désiré et de faire appel a cette fonction ou procedure depuis sqlloader.

    Désolé, je cherche encore. Il me semble que j'avais fait appelle a une fonction déja contenu dans un package pour passer des ordres SQL.
    Mais je ne me rappel plus si je l'avais fait dans une prod=cédure ou directement dans le fichier de controle.

  5. #5
    Membre expérimenté Avatar de VinceTlse
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 163
    Par défaut
    J'ai contourné le problème en passant par une table temporaire. Une procédure PL/SQL se sert de cette table pour alimenter la table DOSSIER.
    Par contre si tu te rapelle comment l'on fait pour faire appel a une fonction dans le fichier controle, cela m'interesse énormément.
    Merci beaucoup pour ton aide.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 36
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    LOAD DATA INFILE 'test.csv'
    REPLACE
    INTO TABLE TEST2
    FIELDS TERMINATED BY ';'
    TRAILING NULLCOLS
    (
       test_ID "test_seq.nextval",
       test_char,
       val_ID EXPRESSION "test_m(1)"
    )
    Ici test_m(1) est une fonction creer par mes soins. Utilise plutot le nom du shema devant le nom de la fonction pour eviter les pb.

    hope this help

  7. #7
    Membre expérimenté Avatar de VinceTlse
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 163
    Par défaut
    Merci, je vais essayer ça de suite

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/03/2008, 18h39
  2. [SQL] Comment je peux mettre les résultat d'une requete dans un fichier
    Par Maria1505 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 10/12/2006, 21h44
  3. resultat d'une requete dans un fichier SQLNET
    Par Poisson59 dans le forum Oracle
    Réponses: 1
    Dernier message: 01/03/2006, 16h14
  4. requete dans un fichier Ecxel
    Par Toff !!!!! dans le forum Access
    Réponses: 1
    Dernier message: 07/12/2005, 22h23
  5. resultat d'une requete dans un fichier csv
    Par PAYASS59 dans le forum Requêtes
    Réponses: 1
    Dernier message: 21/09/2005, 21h14

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