TimeStamp dans le SQL Loader

TimeStamp dans le SQL Loader - SQL/NoSQL - Programmation

Marsh Posté le 17-01-2007 à 23:39:55    

Bonjour,
 
j'ai un problème d'insertion de TIMESTAMP dans une table Oracle de la forme :
CREATE TABLE CountryRegion  
(
 CountryRegionCode nvarchar2 (3) NOT NULL ,  
 Name nvarchar2 (50) NOT NULL ,  
 ModifiedDate timestamp  DEFAULT  ( (SYSDATE) ) NOT NULL ,  
 CONSTRAINT PK_CountryRegion_Country_ADV66 PRIMARY KEY (CountryRegionCode)  
)
 
Voila mon fichier CSV:
AD;Andorra;1998-06-01 00:00:00.000
AE;United Arab Emirates;1998-06-01 00:00:00.000
.....
 
Et mon fichier de contrôle :
 
LOAD DATA INFILE 'C:\LOAD\DATA\02-CountryRegion.csv'
INTO TABLE CountryRegion  
FIELDS TERMINATED BY ';'
(   CountryRegionCode position (1:2),
 Name,  
 ModifiedDate TIMESTAMP(6) "YYYY-MM-DD HH12:mi:ss.ff3"
)
 
J'obtiens l'erreur :
 
Enregistrement 1 : Rejeté - Erreur sur table COUNTRYREGION, colonne MODIFIEDDATE.
ORA-01841: L'année (complète) doit être comprise entre -4713 et +9999 et être différente de 0
 
Si j'ote l'option TIMESTAMP ...., j'obtiens l'erreur:
 
Enregistrement 1 : Rejeté - Erreur sur table COUNTRYREGION, colonne MODIFIEDDATE.
ORA-01858: Caractère non numérique trouvé à la place d'un caractère numérique
 
Que faire??
 
Si je tentes les INSERT un à un en castant "timestamp", ca passe nickel. Est-il possible de caster autrement dans le fichier de contrôle ??
 
Merci

Reply

Marsh Posté le 17-01-2007 à 23:39:55   

Reply

Marsh Posté le 18-01-2007 à 01:13:00    

Pour simplifier (enfin gspr) le problème, j'ai modifié le type de la table en DATE.
J'ai testé de tronquer le champ sur la première ligne pour effectuer des tests:
 
AD;Andorra;1998-06-01
 
LOAD DATA INFILE 'C:\LOAD\DATA\02-CountryRegion.csv'
INTO TABLE CountryRegion  
FIELDS TERMINATED BY ';'
(   CountryRegionCode position (1:2),
 Name,  
 ModifiedDate "to_date(:ModifiedDate,'YYYY-MM-DD')"
)
 
 
J'obtiens la très agaçante erreur suivante :
 
Enregistrement 1 : Rejeté - Erreur sur table TEST, colonne MADATE.
ORA-01841: L'année (complète) doit être comprise entre -4713 et +9999 et être différente de 0
 
Comment faire SVP ??
Merci
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed