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 :

Problème de load avec plusieurs When


Sujet :

SQL*Loader Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2
    Par défaut [Résolu] Problème de load avec plusieurs When
    Bonjour,
    Je rencontre un problème avec un import SqlLoader, et je ne comprends vraiment pas ce que je fais de mal...
    J'essaye de faire un LOAD REPLACE et j'ai deux clauses INTO sur la même table, chacune accompagnée d'un WHEN différent vu que les OR ne sont pas autorisés
    Aucun problème à l'execution, mais au final seule ma première section INTO est correctement insérée. Si j'inverse mes deux clauses INTO, c'est toujours la première clause exécutée, la seconde semblant être ignorée...

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    LOAD DATA                                                                     
    REPLACE 
     
    INTO TABLE MTM_EXTRACT 
    WHEN (BOOKING='A') AND (VALO='ST')
    FIELDS TERMINATED BY '|'  
    (
    	AS_OF_DATE           "TO_DATE( LTRIM( RTRIM(:AS_OF_DATE) ), 'YYYY/MM/DD')",
    	filler15							FILLER,
    	filler16							FILLER,
    	filler17							FILLER,
    	filler18							FILLER,
    	filler19							FILLER,
    	filler20							FILLER,
    	MTM_CURRENCY        NULLIF MTM_CURRENCY=BLANKS,
    	MTM_AMOUNT          "LTRIM( RTRIM(:MTM_AMOUNT) ) ",
    	filler21							FILLER,
    	filler22							FILLER,
    	filler23							FILLER,
    	filler24						FILLER,
    	filler25						FILLER,
    	filler26						FILLER,
    	filler27						FILLER,
    	filler28						FILLER,
    	BOOKING			FILLER,	
    	VALO						FILLER,
    	SOURCE_SYSTEM_ID     NULLIF SOURCE_SYSTEM_ID=BLANKS,
    	DEAL_ID_FO           "SUBSTR( LTRIM( RTRIM(:DEAL_ID_FO) ), 1, 20)",
    	MTM_FORMAT           NULLIF MTM_FORMAT=BLANKS,
    	MTM_SOURCE           "UPPER( LTRIM( RTRIM(:MTM_SOURCE) ) )"
    )
     
    INTO TABLE MTM_EXTRACT 
    WHEN (BOOKING=BLANKS) AND (VALO=BLANKS)
    FIELDS TERMINATED BY '|'  
    trailing nullcols
    (
    	AS_OF_DATE           "TO_DATE( LTRIM( RTRIM(:AS_OF_DATE) ), 'YYYY/MM/DD')",
    	filler1							FILLER,
    	filler2							FILLER,
    	filler3							FILLER,
    	filler4							FILLER,
    	filler5							FILLER,
    	filler6							FILLER,
    	MTM_CURRENCY        NULLIF MTM_CURRENCY=BLANKS,
    	MTM_AMOUNT          "LTRIM( RTRIM(:MTM_AMOUNT) ) ",
    	filler7							FILLER,
    	filler8							FILLER,
    	filler9							FILLER,
    	filler10						FILLER,
    	filler11						FILLER,
    	filler12						FILLER,
    	filler13						FILLER,
    	filler14						FILLER,
    	BOOKING							FILLER,	
    	VALO								FILLER,
    	SOURCE_SYSTEM_ID     NULLIF SOURCE_SYSTEM_ID=BLANKS,
    	DEAL_ID_FO           "SUBSTR( LTRIM( RTRIM(:DEAL_ID_FO) ), 1, 20)",
    	MTM_FORMAT           NULLIF MTM_FORMAT=BLANKS,
    	MTM_SOURCE           "UPPER( LTRIM( RTRIM(:MTM_SOURCE) ) )"
    )
    Dans mon jeu de test, j'obtiens:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Table MTM_EXTRACT:
      2 Rows successfully loaded.
      0 Rows not loaded due to data errors.
      5 Rows not loaded because all WHEN clauses were failed.
      0 Rows not loaded because all fields were null.
     
     
    Table MTM_EXTRACT:
      0 Rows successfully loaded.
      0 Rows not loaded due to data errors.
      7 Rows not loaded because all WHEN clauses were failed.
      0 Rows not loaded because all fields were null.
    Alors que le second when doit matcher 1 enregistrement (il match bien si j'inverse les when, d'ailleurs)

    Chose intrigante, si j'enlève le second When, alors j'ai le résultat suivant sur le second INTO:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Table MTM_EXTRACT:
      0 Rows successfully loaded.
      0 Rows not loaded due to data errors.
      0 Rows not loaded because all WHEN clauses were failed.
      7 Rows not loaded because all fields were null.
    Il semblerait que le second INTO a 7 ligne d'enregistrements vides
    Est-ce un effet de bord des filler?
    Si vous avez une idée, je suis preneur!

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2
    Par défaut
    J'ai fini par trouver, et effectivement, c'était tout bête...
    A partir de la seconde clause INTO, il faut rajouter un POSITION(1) pour repositionner la lecture au bonne endroit.
    Dans mon cas:
    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
    INTO TABLE MTM_EXTRACT 
    WHEN (BOOKING=BLANKS) AND (VALO=BLANKS)
    FIELDS TERMINATED BY '|'  
    TRAILING nullcols
    (
    	AS_OF_DATE           POSITION(1)   "TO_DATE( LTRIM( RTRIM(:AS_OF_DATE) ), 'YYYY/MM/DD')",
    	filler1							FILLER,
    	filler2							FILLER,
    	filler3							FILLER,
    	filler4							FILLER,
    	filler5							FILLER,
    	filler6							FILLER,
    	MTM_CURRENCY        NULLIF MTM_CURRENCY=BLANKS,
    	MTM_AMOUNT          "LTRIM( RTRIM(:MTM_AMOUNT) ) ",
    	filler7							FILLER,
    	filler8							FILLER,
    	filler9							FILLER,
    	filler10						FILLER,
    	filler11						FILLER,
    	filler12						FILLER,
    	filler13						FILLER,
    	filler14						FILLER,
    	BOOKING							FILLER,	
    	VALO								FILLER,
    	SOURCE_SYSTEM_ID     NULLIF SOURCE_SYSTEM_ID=BLANKS,
    	DEAL_ID_FO           "SUBSTR( LTRIM( RTRIM(:DEAL_ID_FO) ), 1, 20)",
    	MTM_FORMAT           NULLIF MTM_FORMAT=BLANKS,
    	MTM_SOURCE           "UPPER( LTRIM( RTRIM(:MTM_SOURCE) ) )"
    )

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 01/03/2009, 14h44
  2. Réponses: 1
    Dernier message: 18/02/2009, 18h39
  3. Problème Connection String avec plusieurs projets.
    Par Nadiya dans le forum Windows Forms
    Réponses: 0
    Dernier message: 20/11/2008, 23h11
  4. Problème de load avec curdate
    Par patsak dans le forum Requêtes
    Réponses: 9
    Dernier message: 11/07/2008, 11h03
  5. Réponses: 2
    Dernier message: 26/10/2006, 10h13

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