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 et les clés primaires


Sujet :

SQL*Loader Oracle

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 759
    Points : 208
    Points
    208
    Par défaut sql loader et les clés primaires
    bonjour à tous,
    Existe t-il une option ou une fonction qui permette de ne pas charger une deuxième valeur identique dans un champ de table si celui ci est une clé primaire?
    MErçi

  2. #2
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    536
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 536
    Points : 1 359
    Points
    1 359
    Par défaut
    Je suppose que votre table contient déjà une clé primaire mais que celle-ci a été ignorée lors du chargement via sqlloader parce que vous avez utilisé un "direct path load"

    Si c'est bien le cas, apprenez s'il vous plaît à bien expliciter votre problème afin que nous autres lecteurs puissions vous aider sans deviner.

    Sinon, si vous voulez que votre clé primaire joue son rôle alors utilisez un "load conventionnel (direct=false dans votre control file)
    Bien Respectueusement
    www.hourim.wordpress.com

    "Ce qui se conçoit bien s'énonce clairement"

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

    Informations forums :
    Inscription : Février 2007
    Messages : 759
    Points : 208
    Points
    208
    Par défaut réponse à Mohamed.Houri
    Citation Envoyé par Mohamed.Houri Voir le message
    Je suppose que votre table contient déjà une clé primaire mais que celle-ci a été ignorée lors du chargement via sqlloader parce que vous avez utilisé un "direct path load"

    Si c'est bien le cas, apprenez s'il vous plaît à bien expliciter votre problème afin que nous autres lecteurs puissions vous aider sans deviner.

    Sinon, si vous voulez que votre clé primaire joue son rôle alors utilisez un "load conventionnel (direct=false dans votre control file)
    *****************************************
    Merçi pour votre réponse, en fait vous avez raison ça fonctionne avec le direct=false il prend bien en compte ma clé primaire.
    Mais mon problème vient du fait que j'avais voulu dans un seul control faire un chargement avec deux when.
    Je m'explique:
    Ma base : en gras clés primaires et en italique clés étrangères
    TETA(ETA_C_CODE_EW);
    TAGE(AGE_C_MAT_AGENT,AGE_CODE_EH,AGE_C_DATE_PAIE,AGE_C_CODE_LIGNE,);
    TPAI(PAI_C_DATE_PAIE,.....,PAI_C_CODE_LIGNE);
    TTYL(TYL_C_CODE_LIGNE,TYL_L_LIB_LIGNE);
    mon fichier données :
    02001|ENT|15/01/2013|12/12/2012|01/01/2013|4|18573|0|14658|
    02001|RUB|076813|89|1|15/01/2013|
    02001|RUB|101524|39|1|15/01/2013|

    J'ai voulu créer un seul control pour ce chargement :
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    LOAD DATA
    INFILE 'I:\Base de données\SQLLOADER\Data.txt'
      BADFILE '_3.bad'
      DISCARDFILE '_3.dsc' 
      insert  
      into table TETA
      when (7:9) <> 'RUB'
      FIELDS terminated by "|"  
      TRAILING NULLCOLS
      ( 
        ETA_C_CODE_EH
      ) 
      INTO TABLE TPAI
      when (7:9) <> 'RUB'  
      FIELDS terminated by "|"  
      TRAILING NULLCOLS 
      (
        PAI_C_CODE_LIGNE "DECODE(:PAI_C_CODE_LIGNE,'ENT',1,'RUB',2)",
        PAI_C_DATE_PAIE date,
        PAI_L_PAIE_PREC DATE,
        PAI_L_DATE_RETRO date,
        PAI_L_NB_PAIE_M_TPS ,
        PAI_L_NB_PAYE ,
        PAI_L_NB_AGENT_RAJOUTE ,
        PAI_L_TPS_CALCUL_TOTAL 
     
      )  
      into table TAGE
      when (7:9) = 'RUB'
      FIELDS terminated by "|"  
      TRAILING NULLCOLS
      (
        AGE_C_CODE_EH,
        AGE_C_CODE_LIGNE "DECODE(:AGE_C_CODE_LIGNE,'ENT',1,'RUB',2)",
        AGE_C_MAT_AGENT,
        AGE_L_NB_SECONDE,
        AGE_L_NB_AGENT_SECONDE,
        AGE_C_DATE_PAIE
       )
    Il me rejette les données suivantes :
    02001|RUB|076813|89|1|15/01/2013|
    02001|RUB|101524|39|1|15/01/2013|

    J'ai donc l'impression qu'avec 2 when ça coince il ne tient compte que du premier car avec deux chargements différents ça marche :
    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
     
    LOAD DATA
    INFILE 'I:\Base de données\SQLLOADER\_Data.txt'
      BADFILE '7.bad'
      DISCARDFILE '7.dsc' 
      insert  
      into table TETA
      when (1:3) <> 'RUB'
      FIELDS terminated by "|"  
      TRAILING NULLCOLS
      ( 
        ETA_C_CODE_EH
      ) 
      INTO TABLE TPAI
      when (1:3) <> 'RUB'  
      FIELDS terminated by "|"  
      TRAILING NULLCOLS 
      (
        PAI_C_CODE_LIGNE "DECODE(:PAI_C_CODE_LIGNE,'ENT',1,'RUB',2)",
        PAI_C_DATE_PAIE date,
        PAI_L_PAIE_PREC DATE,
        PAI_L_DATE_RETRO date,
        PAI_L_NB_PAIE_M_TPS ,
        PAI_L_NB_PAYE ,
        PAI_L_NB_AGENT_RAJOUTE ,
        PAI_L_TPS_CALCUL_TOTAL 
     
      )
    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 'I:\Base de données\SQLLOADER\_Data.txt'
      BADFILE '_2.bad'
      DISCARDFILE '_2.dsc' 
      insert
      into table TAGE
      when (7:9) = 'RUB'
      FIELDS terminated by "|"  
      TRAILING NULLCOLS
      (
        AGE_C_CODE_EH,
        AGE_C_CODE_LIGNE "DECODE(:AGE_C_CODE_LIGNE,'ENT',1,'RUB',2)",
        AGE_C_MAT_AGENT,
        AGE_L_NB_SECONDE,
        AGE_L_NB_AGENT_SECONDE,
        AGE_C_DATE_PAIE
       )
    Voilà j'espère avoir été plus clair, si vous avez une idée merçi de me le faire savoir et encore merçi.

Discussions similaires

  1. Sql Loader et les variables externes
    Par devdev2003 dans le forum SQL*Loader
    Réponses: 13
    Dernier message: 24/03/2014, 11h44
  2. Récupérer les clés primaires "perdues"
    Par Dnx dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 12/07/2006, 17h13
  3. SQL*LOADER rejet les chaines en accents
    Par bilalove dans le forum Oracle
    Réponses: 7
    Dernier message: 24/04/2006, 16h34
  4. [EJB2.1 Entity] [CMP] [xdoclet] Problème avec les clés primaires
    Par shingo dans le forum Java EE
    Réponses: 1
    Dernier message: 10/02/2006, 16h41
  5. [C#] Probleme sur les clés primaires composites
    Par stardeus dans le forum Windows Forms
    Réponses: 7
    Dernier message: 12/02/2005, 23h28

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