Bonjour,
je n'arrive pas à importer une DATE qui peut être à null via sql loader de Oracle.
Voici mes différents essais dans le fichier de controle .ctl et la réponse de sqlldr :
mon premier champs DATE fonctionne :
"B_DATE" "to_date(:B_DATE,'MON DD YYYY','NLS_DATE_LANGUAGE = ''English''')"
avec des données du genre Feb 14 2003
Le probleme se pose pour mon second champs qui est parfois NULL avec comme délimiteur la tabulation (FIELDS TERMINATED by X'09'). Dans mon exemple il est null à partir de la ligne 10441. Les premières passent bien.
essai 1 : "E_DATE" "to_date(:E_DATE,'MON DD YYYY','NLS_DATE_LANGUAGE = ''English''')"
=> Enregistrement 10441 : Rejeté - Erreur sur table "TFRC_TRMTH", colonne "E_DATE".
[...]
ORA-01843: ce n'est pas un mois valide
\\MAXIMUM ERROR COUNT EXCEEDED - Les statistiques données ci-dessus résultent d'une exécution partielle.
Table "TFRC_TRMTH" :
Chargement réussi de 10461 Lignes.
51 Lignes chargement impossible dû à des erreurs de données.
essai 2 : "E_DATE" NULLIF :E_DATE='NULL' "to_date(:E_DATE,'MON DD YYYY','NLS_DATE_LANGUAGE = ''English''')"
=> SQL*Loader-350: Erreur de syntaxe en ligne 25.
Nombre entier positif ou Nom de colonne attendu, ":" trouvé.
essai 3 : "E_DATE" DATE NULLIF :E_DATE='NULL' "to_date(:E_DATE,'MON DD YYYY','NLS_DATE_LANGUAGE = ''English''')"
=> SQL*Loader-350: Erreur de syntaxe en ligne 25.
Nombre entier positif ou Nom de colonne attendu, ":" trouvé.
essai 4 : "E_DATE" DATE "to_date(:E_DATE,'MON DD YYYY','NLS_DATE_LANGUAGE = ''English''')"
NULLIF :E_DATE='NULL'
=> ORA-01821: format de date inconnu
essai 5 : "E_DATE" "to_date(:E_DATE,'MON DD YYYY','NLS_DATE_LANGUAGE = ''English''')"
NULLIF :E_DATE='NULL'
=> SQL*Loader-350: Erreur de syntaxe en ligne 26.
"," ou ")" attendu, Mot-clé nullif trouvé.
essai 6 : "E_DATE" DATE TERMINATED by X'09' NULLIF :E_DATE='NULL' "to_date(:E_DATE,'MON DD YYYY','NLS_DATE_LANGUAGE = ''English''')"
=> Nombre entier positif ou Nom de colonne attendu, ":" trouvé.
essai 7 : "E_DATE" DATE TERMINATED by X'09' NULLIF E_DATE='NULL' "to_date(:E_DATE,'MON DD YYYY','NLS_DATE_LANGUAGE = ''English''')"
=> SQL*Loader-403: La colonne référencée E_DATE n'apparaît pas dans la table "TFRC_TRMTH".
essai 8 : "E_DATE" "decode(:E_DATE,null,null,to_date(:E_DATE,'MON DD YYYY','NLS_DATE_LANGUAGE = ''English'''))"
=> Enregistrement 10441 : Rejeté colonne "E_DATE".ORA-01843: ce n'est pas un mois valide
essai 9 : "E_DATE" decode(:E_DATE,null,null,"to_date(:E_DATE,'MON DD YYYY','NLS_DATE_LANGUAGE = ''English''')")
=> Enregistrement 10441 : Rejeté colonne "E_DATE".ORA-01843: ce n'est pas un mois valide
Est ce que quelqu'un aurait la solution ? Je bute sur ce problème depuis 24h, et je commence à être à cours d'idées... En tous cas de bonnes idées ;-)
