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

  1. #1
    Membre à l'essai
    Inscrit en
    mars 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 26
    Points : 10
    Points
    10

    Par défaut Mon premier sql*loader

    Bonjour à tous !

    Voilà mon souci : je dois remplir une colonne dans oracle, à l'aide d'un fichier plat (txt ou csv)....
    Après quelques recherches, et surtout après discussion avec les dba, on m'a conseillé d'utiliser sql*loader.
    J'ai pu trouver quelques infos, et commencer à écrire mon fichier controle, mais il me manque quelques éléments :
    Il faudrait que je puisse comparer un champ de ma table avec un de mon fichier, afin de mettre à jour ma colonne que si les 2 champs sont égaux :
    Ma Table (champ1, REF_ID, champ3, champ4, champ5, COD_ID)
    Mon fichier(REF_ID, COD_ID).
    Le champ COD_ID de ma table est celui que je veux remplir (à null pour le moment), le REF_ID de la table et du fichier, qui doivent être identiques.
    Voici mon fichier controle actuellement :
    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
     
    LOAD DATA
    INFILE 'extract_cod_ref.txt'
     
    	BADFILE 'cod.bad'
    	DISCARDFILE 'cod.dsc'
     
    APPEND INTO TABLE L_ENT 
    FIELDS terminated by ";" TRAILING NULLCOLS
    WHEN (COD_ID=null)
    (
    CH1,
    REF_ID,
    CH3,
    CH4,
    CH5,
    COD_ID
    )
    Comment puis-je spécifier ma condition ?

    Merci d'avance pour votre aide !

  2. #2
    Membre à l'essai
    Inscrit en
    mars 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 26
    Points : 10
    Points
    10

    Par défaut

    euh....personne ne sait, ou je me trompe dans l'utilisation de sql*loader et ce que je souhaite faire n'est pas possible ??

  3. #3
    Expert confirmé
    Profil pro
    Inscrit en
    août 2008
    Messages
    2 802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2008
    Messages : 2 802
    Points : 5 496
    Points
    5 496

    Par défaut

    Il faudrait que je puisse comparer un champ de ma table avec un de mon fichier, afin de mettre à jour ma colonne que si les 2 champs sont égaux
    Utilse une table externe à la place de sqlloader, sinon il faudra passer par une table tampon.

  4. #4
    Membre à l'essai
    Inscrit en
    mars 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 26
    Points : 10
    Points
    10

    Par défaut

    effectivement, en continuant mes recherches j'ai vu que sql*loader ne permettait pas des update....
    merci de ta confirmation
    Par contre concernant les tables tampon, j'imagine qu'il faut des droits sur la base ?

  5. #5
    Expert confirmé
    Profil pro
    Inscrit en
    août 2008
    Messages
    2 802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : août 2008
    Messages : 2 802
    Points : 5 496
    Points
    5 496

    Par défaut

    Ben il faut préalablement créer une table pour accueillir les données du fichier, ensuite tu fais l'update.
    Les tables externes permettent de directement faire l'update, c'est à mon sens la méthode à utiliser.

    Evidemment il faut avoir les droits d'update sur la table ou avoir le droit d'exécution sur une procédure qui fera l'update.

    Donne toutes les infos à tes dbas et vois avec eux la méthode qu'ils préfèrent et les grants nécessaires.

  6. #6
    Membre à l'essai
    Inscrit en
    mars 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 26
    Points : 10
    Points
    10

    Par défaut

    Re !

    Bon, j'ai finalement changé de philosophie, en fait depuis le début de la semaine je cherchais comment faire cet update, j'ai tourné autour de diverses solutions au fil de mes recherches...écouté des conseils de collègues, avec chacun sa façon de faire...
    bref, j'ai fait un ti script java qui fait bien son boulot (testé en base de dev)... tant pis si ça ne correspond pas aux bonnes pratiques, c'est pour un update qui ne se fera qu'une seule fois !

    Merci quand même pour de ton aide !!

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

Discussions similaires

  1. Réponses: 18
    Dernier message: 10/04/2014, 13h18
  2. SQL Loader (ne charge pas tout mon fichier)
    Par ticed1979 dans le forum SQL*Loader
    Réponses: 2
    Dernier message: 19/08/2008, 08h33
  3. Réponses: 1
    Dernier message: 30/06/2008, 10h17
  4. [Mon premier code SQL] Multiples INNER JOIN's
    Par Paulinho dans le forum Langage SQL
    Réponses: 1
    Dernier message: 14/11/2005, 09h04
  5. erreur sql loader et performance
    Par mobisky dans le forum SQL*Loader
    Réponses: 14
    Dernier message: 20/08/2003, 12h27

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