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

SQL Oracle Discussion :

sqlldr et format date


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 206
    Par défaut sqlldr et format date
    Bonjour à tous,

    J'utilise sql loader pour exporter/importer des données sur oracle 9i installé sur windows xp pro.

    Je rencontre le problème suivant :

    Lorsque j'importe des données : les formats date et numérique cause des erreurs :
    dans les fichiers dat les format date sont DD/MM/YYYY et les numeric =', '

    Une demi solution : avant de faire l'import depuis un poste sous linux (ubuntu) je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    export NLS_DATE_FORMAT='DD/MM/YYYY HH24:MI:SS'
    export NLS_NUMERIC_CHARACTERS=', '
    Et là l'importation se déroule sans erreur.

    Alors que sur un autre poste (red hat), si je suis la même procédure (export NLS...), j'ai quand même des erreur dues au format date et numeric. Comme si mes paramètres NLS n'étaient pas pris en compte.
    Dans le log, l'erreur me dit le format mois n'est pas valide !!!
    Je précise que si je tape la commande env : je visualise bien mes paramètres NLS que je viens de définir.

    Quelqu'un a une idée?
    Je souhaiterais ne pas retoucher les fichiers.ctl pour redéfinir le format des colonnes, j'en ai un bon paquet.

    Merci d'avance.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    S'agit-il des mêmes instances ? Avec le même compte utilisateur ?
    Un trigger sur logon pourrait expliquer cette différence de comportement.

    Vérifiez que vous avez le même résultat dans les 2 cas pour:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     select * from nls_session_parameters where parameter like '%DATE%';
    après avoir positionné au niveau shell les variables NLS_xxx.

  3. #3
    Membre éclairé

    Inscrit en
    Septembre 2003
    Messages
    425
    Détails du profil
    Informations forums :
    Inscription : Septembre 2003
    Messages : 425
    Par défaut
    1°) Assure toi du format de tes exports, toujours le même !

    2°) donne la même définition de format dans tes imports dans le controleur .ctl

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DAT_CREA    POSITION(397:404)  date "YYYYMMDD" NULLIF DAT_CREA='00000000'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    SQL> select to_number('1.2','99999999999999D99','NLS_NUMERIC_CHARACTERS=''. ''')from dual;
     
    TO_NUMBER('1.2','99999999999999D99','NLS_NUMERIC_CHARACTERS=''.''')
    -------------------------------------------------------------------
                                                                    1,2
     
    SQL> select to_number('1,2','99999999999999D99','NLS_NUMERIC_CHARACTERS='', ''')from dual;
     
    TO_NUMBER('1,2','99999999999999D99','NLS_NUMERIC_CHARACTERS='',''')
    -------------------------------------------------------------------
                                                                    1,2
     
    SQL> 
    LOAD DATA
    ...
    into table 
    ....
    (
    geom position(9999) "to_number(:geom,'99999999999999D99999999999','NLS_NUMERIC_CHARACTERS='',.''')"
    ...
    )
    L'exemple sur les number sont tirés d'ici

    Comme ca quel que soit ton séparateur ca fonctionne

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 206
    Par défaut
    Pifor,
    Effectivement sur la redhat, je n'ai pas les même parametres de session sur les date quand j'execute la requete suivante dans sqlplus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM nls_session_parameters WHERE parameter LIKE '%DATE%';
    qui me donne le résultat suivant : NLS_DATE_FORMAT='DD/MON/RR'

    Pourtant avant de me connecter sous sqlplus, je fait bien sur mon compte utilisateur "root"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    export NLS_DATE_FORMAT='DD/MM/YYYY'
    Où est ce que je me goure????



    Merci sygale pour ta réponse, mais comme je le disais dans le post initial, je ne veux pas toucher à mes ctl
    PS : le lien n'a pas l'air de fonctionner

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Par défaut
    Essayez:

    export NLS_DATE_FORMAT="DD/MM/YYYY"
    Il ne devrait pas y avoir de simple ou double quote dans les valeurs affichées par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM nls_session_parameters WHERE parameter LIKE '%DATE%';

  6. #6
    Membre Expert
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Par défaut
    sous sqlplus, gaffe au fichier sournois $ORACLE_HOME/sqlplus/admin/glogin.sql

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 206
    Par défaut
    Bonjour,

    Je reviens à la charge,
    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    export NLS_DATE_FORMAT="DD/MM/YYYY"
    Mais de toute manière avec des doubles ou simples quotes, lorsque je fais : sous la redhat env : j'ai bien ma variable initialisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NLS_DATE_FORMAT=DD/MM/YYYY
    Les simples ou doubles quotes disparaissent.

    Non, je pense que le problème viens du fait que mes variables d'environnement ne sont pas prises en compte car elles ne sont pas reconnues par sqlldr.
    Je pense qu'il faut que je définisse autres choses aussi, mais quoi?

    En tout cas quand je me connecte sous sqlplus,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NLS_DATE_FORMAT=DD-MON-RR

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 206
    Par défaut
    D'accords, la config est bizzard,

    Mais ne nous égarons pas :
    Il faut bien garder en tête que depuis un poste avec ubuntu, j'arrive a définir correctement mes variable d'environnement (export NLS...) confirmés grace à sqlplus,
    ET que sur un autre poste (red hat), je suis les mêmes étapes MAIS, je n'ai pas les mêmes variables définies dans sqlplus CF ????

    Les 2 postes linux voulant se connecter sur 1 SEUL même poste win xp pro.

    Je suis d'accords, peut être que chez le client ca marchera, mais si ca ne marche pas...

  9. #9
    Membre Expert
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Par défaut
    c'est le meme shell que tu utilise des 2 cotés ?
    tu as la meme variable NLS_TERRITORY ?

  10. #10
    Membre Expert
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Par défaut
    et NLS_LANG ?

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 206
    Par défaut
    Sur le poste où est installé ubuntu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SHELL=/bin/bash
    NLS_LANG=FRENCH_FRANCE.WE8MSWIN1252
    Et sur la red hat je n'ai qu'un pauvre

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 206
    Par défaut Merci Pifor
    Merci pifor,

    grace à toi, ca fonctionne, j'ai fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    export NLS_LANG=FRENCH_FRANCE.WE8MSWIN1252
    NLS_DATE_FORMAT=DD/MM/YYYY
    Et ca ...
    Marche !!!!!!!!!!

    Par contre, je ne peux pas me contenter de dire, ca marche, j'aimerai comprendre pourquoi???
    Est ce trop demander une petite explication?

    Heureusement que vous êtes là pour conseiller des débutants comme moi je commence sous linux et ca fait quelques mois que je tripatouille oracle.

    Merci encore

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 206
    Par défaut erratum
    Je m'excuse,
    rendons à césar ce qui est à césar!

    Merci remi444!!!

    PS : merci aussi à tous ceux qui ont pris la peine de proposer des pistes et des solutions.

    Bonne fin d'année à tous et à l'année prochaine

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

Discussions similaires

  1. Format date : y'a forcément plus simple...
    Par ZERS dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/12/2004, 15h28
  2. Transformation en format Date
    Par Jean-Matt dans le forum Langage SQL
    Réponses: 6
    Dernier message: 16/11/2004, 16h20
  3. Tester un format date
    Par Tapioca dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 30/06/2004, 10h18
  4. interfaces Access et format Date
    Par say dans le forum InterBase
    Réponses: 21
    Dernier message: 10/05/2004, 17h24
  5. Format date
    Par cochet dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/03/2004, 08h37

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