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 - Charger des données simultanément dans 2 tables


Sujet :

Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 19
    Points : 14
    Points
    14
    Par défaut SQL*LOADER - Charger des données simultanément dans 2 tables
    Bonjour
    Oracle Database 9i Win 2000
    Avec SQL*LOADER est-t-il possible de charger dans 2 tables selon la valeur d'un champ : dans la table T1 si la valeur de col3 est '1' sinon dans la table T2 (les 2 tables sont identiques du point de vue structure)
    J'ai essayé avec le fichier de contrôle suivant mais ça ne fonctionne pas.
    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
     
    Load data
    infile *
    insert
    into table t1
    when (col3 = '1')
    fields delimited by ':'  trailing nullcols (col1, col2, col3, col4)
     
    into table t2
    when (col3 != '1')
    fields delimited by ':'  trailing nullcols (col1, col2, col3, col4)
     
    begindata
    1:ABC:1:15000
    4:DEF:2:38000
    5:GHI:1:20000
    Merci de votre aide

  2. #2
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Points : 2 998
    Points
    2 998
    Par défaut
    Bonjour,

    Le chargement dans 2 tables est bien possibles avec sqlldr.

    essayez :
    INTO TABLE t2
    when (col3 <> '1')
    FIELDS delimited BY ':' TRAILING nullcols (col1, col2, col3, col4)
    Sinon quelle erreur obtenez vous ?
    It isn't that they can't see the solution, it's that they can't see the problem.
    Mes Articles et Traductions (Microstrategy, Css et Javascript)
    Si vous souhaitez contribuer à la rubrique BI, contactez-moi ou tout autre membre de l'équipe BI par MP.

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Merci
    Il y a une petite erreur de syntaxe dans mon fichier de controle, au lieu de "Delimited" il fallait lire "Terminated". Mais le problème est ailleurs. Je réussis à charger dans la première table mais pas dans la seconde.
    Types des colonnes :
    col1 number, col2 varchar2(20), col3 number, col4 number

    Voici donc un extrait du fichier log

    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
    41
    42
    43
    44
    45
    Table T1, chargé quand COL3 = 0X31(caractère '1')
    Option d'insertion en vigueur pour cette table : INSERT
    option TRAILING NULLCOLS effective
     
       Nom de colonne               Position   Long.  Séparat. Encadrem. Type de données
    ------------------------------ ---------- ----- ---- ---- ---------------------
    COL1                                FIRST     *   :       CHARACTER            
    COL2                                 NEXT     *   :       CHARACTER            
    COL3                                 NEXT     *   :       CHARACTER            
    COL4                                 NEXT     *   :       CHARACTER            
     
    Table T2, chargé quand COL3 != 0X31(caractère '1')
    Option d'insertion en vigueur pour cette table : INSERT
    option TRAILING NULLCOLS effective
     
       Nom de colonne               Position   Long.  Séparat. Encadrem. Type de données
    ------------------------------ ---------- ----- ---- ---- ---------------------
    COL1                                 NEXT     *   :       CHARACTER            
    COL2                                 NEXT     *   :       CHARACTER            
    COL3                                 NEXT     *   :       CHARACTER            
    COL4                                 NEXT     *   :       CHARACTER            
     
    Enregistrement 2 : Rejeté - échec de toutes les clauses WHEN.
     
    Table T1 :
      Chargement réussi de 2 Lignes.
      0 Lignes chargement impossible dû à des erreurs de données.
      1 Ligne chargement impossible car échec de toutes les clauses WHEN.
      0 Lignes chargement impossible car tous les champs étaient non renseignés.
     
     
    Table T2 :
      Chargement réussi de 0 Lignes.
      0 Lignes chargement impossible dû à des erreurs de données.
      3 Lignes chargement impossible car échec de toutes les clauses WHEN.
      0 Lignes chargement impossible car tous les champs étaient non renseignés.
     
     
    Espace affecté au tableau de liens :                 132096 octets(64 lignes)
    Octets de tampon de lecture : 1048576
     
    Nombre total d'enregistrements logiques ignorés :          0
    Nombre total d'enregistrements logiques lus :             3
    Nombre total d'enregistrements logiques rejetés :         0
    Nombre total d'enregistrements logiques mis au rebut :        1

Discussions similaires

  1. Insérer des données simultanément dans plusieurs table
    Par gabdeschenes dans le forum Langage SQL
    Réponses: 3
    Dernier message: 11/11/2009, 18h42
  2. Réponses: 1
    Dernier message: 09/07/2007, 17h13
  3. Réponses: 1
    Dernier message: 27/10/2006, 12h17
  4. Insérer des données Excel dans une table ACCESS
    Par anikeh dans le forum Access
    Réponses: 4
    Dernier message: 21/12/2005, 22h42

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