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:
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:
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.