Bonjour à toutes et à tous,
Voilà je suis entrain de faire une analyse technique afin d'étudier la possibilité d'utiliser l'Oracle XML afin d'importer/exporter des données dans ma base de données (Oracle 10g2).
J'ai enregistré mes schémas xsd en base de données de la manière suivante :
Sans aucun problème...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 BEGIN DBMS_XMLSCHEMA.registerSchema( SCHEMAURL => 'test.xsd', SCHEMADOC => bfilename('XSD_DIR','test.xsd') ); END; /
Puis j'ai voulu insérer en base un fichier xml validé par ce xsd.
J'ai fait donc de la manière suivante :
Et là j'ai une erreur de ce type :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 insert into "T_MaTable" values (XMLTYPE(bfilename('XML_DIR','test.xml'), nls_charset_id('AL32UTF8')));
Dans mon fichier xml les dates sont écrites de cette manière au format UTC (élément de type xsdateTime dans le fichier xsd):Error starting at line 1 in command:
insert into "T_MaTable" values (XMLTYPE(bfilename('XML_DIR','test.xml'),nls_charset_id('AL32UTF8')))
Error report:
SQL Error: ORA-30992: une erreur s'est produite sur le Xpath /CompteRenduSecurite/DateHeure
ORA-01830: Le modele du format de date se termine avant la conversion de la chaine d'entree entiere
30992. 00000 - "error occurred at Xpath %s"
*Cause:
*Action: See the following error and take appropriate action.
J'ai voulu voir mon paramétrage en base via la requête suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <DateHeure>2009-03-03T08:39:00</DateHeure>
Code : Sélectionner tout - Visualiser dans une fenêtre à part select * from v$nls_parameters;En me référant à la valeur du paramètre NLS_DATE_FORMAT, j'ai modifié ma valeur de cette manière :NLS_LANGUAGE FRENCH
NLS_TERRITORY FRANCE
NLS_CURRENCY €
NLS_ISO_CURRENCY FRANCE
NLS_NUMERIC_CHARACTERS ,
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD/MM/RR
NLS_DATE_LANGUAGE FRENCH
NLS_CHARACTERSET WE8ISO8859P15
NLS_SORT FRENCH
NLS_TIME_FORMAT HH24:MI:SSXFF
NLS_TIMESTAMP_FORMAT DD/MM/RR HH24:MI:SSXFF
NLS_TIME_TZ_FORMAT HH24:MI:SSXFF TZR
NLS_TIMESTAMP_TZ_FORMAT DD/MM/RR HH24:MI:SSXFF TZR
NLS_DUAL_CURRENCY €
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
Et là mon xml est correctement inséré en base mais "03/03/09" comme DateTime on a déjà vu mieux .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <DateHeure>03/03/09</DateHeure>
J'ai donc décidé de modifier le paramètre NLS_DATE_FORMAT :
J'obtiens l'erreur suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ALTER SESSION SET NLS_DATE_FORMAT ='YYYY-MM-DD"T"HH24:MI:SS';
Et là je patauge... je ne sais comment résoudre le problème étant donnée que je ne peux modifier en aucun cas le format des dates dans le fichier et si possible conserver la même simplicité d'insertion des données en base. Est ce possible?Error starting at line 4 in command:
insert into "T_MaTable" values (XMLTYPE(bfilename('XML_DIR','test.xml'),nls_charset_id('AL32UTF8')))
Error report:
SQL Error: ORA-01830: Le modele du format de date se termine avant la conversion de la chaine d'entree entiere
01830. 00000 - "date format picture ends before converting entire input string"
*Cause:
*Action:
Merci !
Partager