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 Help ? Conversion de date


Sujet :

SQL*Loader Oracle

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 40
    Points : 46
    Points
    46
    Par défaut Sql loader Help ? Conversion de date
    Bonjour je récupère un fichier d'un as400 que je veux transfèrer dans Oracle avec Sql Loader. Les dates sont au format suivant "jj/mm/aaaa" stocké dans un champ alphanumérique de 10 caractères. Les enregistrements qui n'ont pas de date ont dans le champ "00/00/0000".
    J'ai défini dans ma tables ces champs comme des champs au format date oracle. Ensuite dans mon fichier de controle j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    LOAD DATA INFILE 'ZXXRMG.csv' TRUNCATE INTO TABLE ZXXRMG FIELDS TERMINATED BY '|' ( 		
    	CCGRP     	,	                                    
    	CCDOS     	,
    	CCTNO     	,
    	CCTPRD    	,
    	CCTUV     	,
    	CCTLIB    	"TRIM(:CCTLIB)",
    	CCTFAM    	,
    	CCTSFA    	,
    	CCTCNF    	,
    	RMGDTC    	"to_date(RMGDTC||' 00:00:00','dd/mm/yyyy HH24:MI:SS')",
    	RMGDTS    	)
    j'ai l'erreur suivante dans le fichier de log de Sql loader :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    Enregistrement 2 : Rejeté - Erreur sur table HHPHYRMG.
    ORA-01847: le jour du mois doit être compris entre 1 et le dernier jour du mois
     
    Specify SKIP=2 when continuing the load.
    \MAXIMUM ERROR COUNT EXCEEDED - Les statistiques données ci-dessus résultent d'une exécution partielle.
    ce résultat est normal car il y a des dates en 00/00/0000
    le résultat que j'aimerais atteindre pendant le chargemenent est :
    Si la date xx/xx/xxxx est valide la convertire et la charger dans le champ sinon mettre a NULL la valeur du champ.
    Puis-je y arriver par les procédure stockés ? Comment faire un if else sur un champ du fichier de controle ?
    Merci pour vos nombreuses réponses.

  2. #2
    Expert éminent
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Points : 7 291
    Points
    7 291
    Par défaut
    un decode (ou même un case when) devrait convenir:

    Orafaq: Can one modify data as it loads into the database?

  3. #3
    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,

    1ere chose, à mon avis il te manque : dans ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RMGDTC    	"to_date(:RMGDTC||' 00:00:00','DD/MM/YYYY HH24:MI:SS')",
    2eme chose, si tu as des dates non valide essaye ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RMGDTC    	"decode('00/00/0000', to_date('01/01/1900','dd/mm/yyyy'),to_date(:RMGDTC||' 00:00:00','DD/MM/YYYY HH24:MI:SS'))",
    Si ta date est egale à 00/00/0000 alors tu rentre une date bidon (ici 01/01/1900)
    sinon tu converti la date

    Normalement ça doit passer

    Voili, voilou
    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.

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

Discussions similaires

  1. SQl LOADER: Problème de date
    Par claralavraie dans le forum SQL*Loader
    Réponses: 25
    Dernier message: 28/03/2017, 11h24
  2. SQL*LOADER Clause when comparaison date
    Par maryline999 dans le forum SQL*Loader
    Réponses: 1
    Dernier message: 07/03/2013, 10h07
  3. Sql*Loader et date
    Par Mpierre dans le forum SQL
    Réponses: 6
    Dernier message: 09/06/2006, 17h25
  4. [T-SQL] Problème de conversions de dates
    Par kooljy dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/06/2006, 14h19
  5. [SQL*Loader] Fusionner 2 colonnes dates
    Par choubiroute dans le forum Oracle
    Réponses: 4
    Dernier message: 21/04/2005, 14h24

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