SQL loader erreur DATE

Résolu/Fermé
Hellreaper Messages postés 34 Date d'inscription mardi 26 février 2008 Statut Membre Dernière intervention 15 octobre 2009 - 27 févr. 2008 à 15:44
asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 23 novembre 2024 - 28 févr. 2008 à 11:39
Bonjou

J'ai un souci avec mon sqlloader quand je veux charger un ficher qui contient une date ( exemple : 20:00 )

Voici mon ficher .ctl

LOAD DATA
INFILE 'C:\dml_t_gares.csv'
TRUNCATE
INTO TABLE t_gares
FIELDS TERMINATED BY ';'
(GARE_ID "seq_t_gares.nextval" ,
NOM,
OUVERTURE,
FERMETURE)

Ma table que j'ai crée:
CREATE TABLE T_GARES
(GARE_ID NUMBER(6) ,
NOM VARCHAR2(25) ,
OUVERTURE DATE ,
FERMETURE DATE );

Et mon ficher log me dit:

Enregistrement 1 : Rejeté - Erreur sur table T_GARES, colonne OUVERTURE.
ORA-01843: ce n'est pas un mois valide

mon .csv:
seq_t_gares.nextval;Bordeaux;06:30;22:00
seq_t_gares.nextval;Brest;06:45;21:45

Voila pour le premier pour ma deusième erreur, elle est toujours de type date mais

ficher .ctl
LOAD DATA
INFILE 'C:\dml_t_trains.csv'
TRUNCATE
INTO TABLE t_trains
FIELDS TERMINATED BY ';'
(TRAIN_ID "seq_t_trains.nextval" ,
DEPART_ID,
ARRIVEE_ID,
DATE_DEPART,
DATE_ARRIVEE,
DISTANCE,
PRIX CHAR NULLIF PRIX = 'NULL' "to_number(:PRIX,'9999999D99','NLS_NUMERIC_CHARACTERS= ''. ''')")

table:
CREATE TABLE T_TRAINS
(TRAIN_ID NUMBER(6),
DEPART_ID NUMBER(6),
ARRIVEE_ID NUMBER(6),
DATE_DEPART DATE,
DATE_ARRIVEE DATE,
DISTANCE NUMBER(6),
PRIX NUMBER(8,2));

Enregistrement 1 : Rejeté - Erreur sur table T_TRAINS, colonne DATE_DEPART.
ORA-01830: Le modèle du format de date se termine avant la conversion de la chaîne d'entrée entière

Mon .csv:
seq_t_trains.nextval;16;1;21/11/05 09:00;21/11/05 12:00;482;120.5
seq_t_trains.nextval;1;16;21/11/05 14:30;21/11/05 17:30;482;120.5

Merci de me dire si vous trouver quelque chose de louche,

3 réponses

asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 23 novembre 2024 426
28 févr. 2008 à 09:33
Bonjour Hellreaper,

On va commencer par la seconde erreur (ORA-1830)

Ton format de date est, si j'en crois nos récents échanges: DD/MM/RR
soit:
• Numero du jour dans le mois (DD)
• Numero du mois (MM)
• Numero de l'année sur deux positions (RR)

Tes dates en entrée (ex: 21/11/05 09:00) sont du format suivant:
• Numero du jour dans le mois (DD)
• Numero du mois (MM)
• Numero de l'année sur deux positions (RR)
• Numero de l'heure dans la journée (HH24) (ATTENTION, si elle sont sur 12 heure, utilise HH ou HH12 + AM ou PM)
• Numero de minute dans l'heure (MI)

soit:
DD/MM/RR HH24:MI
Il te faut donc convertir tes dates, tout comme on a converti les nombres dans ton autre post.
LOAD DATA
INFILE 'C:\dml_t_trains.csv'
TRUNCATE
INTO TABLE t_trains
FIELDS TERMINATED BY ';'
(TRAIN_ID "seq_t_trains.nextval" ,
DEPART_ID,
ARRIVEE_ID,
DATE_DEPART "to_date(:DATE_DEPART,'DD/MM/RR HH24:MI')",
DATE_ARRIVEE "to_date(:DATE_ARRIVEE,'DD/MM/RR HH24:MI')",
DISTANCE,
PRIX CHAR NULLIF PRIX = 'NULL' "to_number(:PRIX,'9999999D99','NLS_NUMERIC_CHARACTERS= ''. ''')")

0