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*Loader Oracle Discussion :

SQL Loader : problème champ ID


Sujet :

SQL*Loader Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 11
    Par défaut SQL Loader : problème champ ID
    Bonjour à tous,

    J'ai un fichier plat que je dois charger dans Oracle 9i par un SQL Loader, dans une table qui contient un champ ID servant de clé primaire. Or dans mon fichier texte je n'ai pas de donnée pour ce champ.

    Pour plus de précisions, voici la structure de mon fichier :


    Champ1 X(8)
    Champ2 X(10)
    Champ3 N(10,2)

    Et la structure de ma table

    ID NUMBER,
    CH1 VARCHAR2(8),
    CH2 VARCHAR2(10),
    CH3 NUMBER(10,2)

    Ma question est donc : comment puis-je faire pour alimenter la colonne ID avec des valeurs s'incrémentant à chaque enregistrement ?

    Merci d'avance de votre aide.

  2. #2
    Membre confirmé
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    61
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 61
    Par défaut
    salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    create sequence ta_table_id;
    create trigger ta_table_seq_t before insert on ta_table
    for each row
    when (new.id is null)
    begin
     select ta_table_id.nextval into :new.id from dual
    end;
    update ta_table set id=ta_table_id.nextval;
    Si j'ai bien compris ce que tu veux ça doit être quelque chose de ce genre

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 11
    Par défaut
    Bonjour,

    Effectivement j'avais pensé à quelque chose dans ce genre là, mais voilà, problème de taille (que j'ai oublié de signaler d'ailleurs, honte à moi ), la base Oracle est celle d'un progiciel sur laquelle je n'ai pas le droit de créer des séquences ni des triggers, de même que je n'ai pas le droit de modifier le modèle de données autrement que via l'outil (d'où ces ... de champ ID qui me sont imposés...)

    J'avais pensé à charger mes données via SQL Loader dans une table de travail, et de la faire un insert dans ma table définitive en remplissant mes ID par un SELECT ROWNUM, mais je voudrais quelque chose de plus "propre" qui m'éviterait de passer par une table intermédiaire...

    Merci en tous cas pour la réponse, en espérant qu'il y en aura d'autres.

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2004
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 98
    Par défaut
    Si tu as une sequence qui alimente le champ PK, tu peux rajouter cela dans ton fichier controle :
    ID "taSequence.NEXTVAL"

    sans que le champ Id existe dans le fichier à charger.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 11
    Par défaut
    Malheureusement non, je n'ai pas de séquence, tout le problème est là.... Et il faut que je la "simule" manuellement, puisque je n'ai pas le droit d'en créer...

    Mais merci à toi d'avoir essayé de m'aider ! Si tu as d'autres idées, je suis preneur !

  6. #6
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 181
    Par défaut
    bonjour,
    j'ai fait cet exemple qui pourra t'aider probablement :

    create table test (id number(3),ch varchar2(10));
    insert into test values (0,'');
    insert into test (id,ch) values ((select max(id)+1 from test),'bb');
    ...
    delete test where id=0 -- pour supprimer le premier élément sur lequel on c'est basé pour commencer l'incrementation

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

Discussions similaires

  1. Sql Loader - Problème avec 0d0a dans un champ texte
    Par frglyon dans le forum Import/Export
    Réponses: 0
    Dernier message: 18/02/2014, 08h27
  2. [SQL LOADER] problème d'ordonnancement de champs
    Par Ginseng dans le forum Import/Export
    Réponses: 2
    Dernier message: 12/06/2009, 13h34
  3. 8i : sql loader et champ texte sur plusieurs lignes
    Par naonedboy dans le forum SQL*Loader
    Réponses: 1
    Dernier message: 23/11/2005, 10h07
  4. [SQL*Loader] Problème de chargement de nombres
    Par sebduth dans le forum Oracle
    Réponses: 10
    Dernier message: 18/11/2005, 10h07
  5. Réponses: 4
    Dernier message: 10/06/2004, 18h05

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