IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Import/Export Oracle Discussion :

[Oracle XML] [DATE] Insertion de date au format UTC.


Sujet :

Import/Export Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 6
    Points : 8
    Points
    8
    Par défaut [Oracle XML] [DATE] Insertion de date au format UTC.
    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 :

    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;
    /
    Sans aucun problème...

    Puis j'ai voulu insérer en base un fichier xml validé par ce xsd.
    J'ai fait donc de la manière suivante :
    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')));
    Et là j'ai une erreur de ce type :
    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.
    Dans mon fichier xml les dates sont écrites de cette manière au format UTC (élément de type xsdateTime dans le fichier xsd):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <DateHeure>2009-03-03T08:39:00</DateHeure>
    J'ai voulu voir mon paramétrage en base via la requête suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from v$nls_parameters;
    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
    En me référant à la valeur du paramètre NLS_DATE_FORMAT, j'ai modifié ma valeur de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <DateHeure>03/03/09</DateHeure>
    Et là mon xml est correctement inséré en base mais "03/03/09" comme DateTime on a déjà vu mieux .

    J'ai donc décidé de modifier le paramètre NLS_DATE_FORMAT :
    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';
    J'obtiens l'erreur suivante:
    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:
    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?

    Merci !

  2. #2
    Futur Membre du Club
    Inscrit en
    Mars 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 6
    Points : 8
    Points
    8
    Par défaut
    Bon eh bien j'ai trouvé la solution!

    En fait il faut changer plus de paramètres que ceux cités précédemment:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ALTER SESSION SET NLS_DATE_FORMAT ='YYYY-MM-DD';
    ALTER SESSION SET NLS_TIMESTAMP_FORMAT ='YYYY-MM-DD"T"HH24:MI:SS';
    ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT ='YYYY-MM-DD"T"HH24:MI:SSTZR';
    Et voilà, encore une victoire de Canard...

  3. #3
    Membre régulier Avatar de taha1
    Femme Profil pro
    débutantE ^ ^
    Inscrit en
    Mai 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : débutantE ^ ^

    Informations forums :
    Inscription : Mai 2009
    Messages : 106
    Points : 105
    Points
    105
    Par défaut

    Merci, j'ai pu résoudre mon problème avec votre réponse

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2002] Insertion de date / conversion de format
    Par 0sef40 dans le forum VBA Access
    Réponses: 2
    Dernier message: 08/06/2011, 08h39
  2. [XL-2007] couleur cellule date differente si date passee, ou date du jour
    Par chris09300 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 29/03/2011, 08h24
  3. Insertion et probleme de format de date
    Par calou_33 dans le forum SQL
    Réponses: 1
    Dernier message: 15/03/2010, 18h04
  4. Insertion de date en oracle
    Par neutralino dans le forum Oracle
    Réponses: 2
    Dernier message: 21/06/2006, 10h58
  5. Insert Into + Date
    Par BoeufBrocoli dans le forum SQL
    Réponses: 10
    Dernier message: 13/08/2003, 11h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo