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

Oracle Discussion :

accents et fichier sql


Sujet :

Oracle

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5
    Points : 2
    Points
    2
    Par défaut accents et fichier sql
    bonjour,
    j'ai un petit souci concernant les accents sous oracle.
    tout d'abord, sous une fenetre dos, avant toute connection jai mis :
    set NLS_LANG=FRENCH_FRANCE.WE8PC850.
    donc tout fonctionne normalement, les accents s'aaffichent lorsque j'insere des donnees ou fais une requete , que ce soit sous dos ou via une interface graphque comme sql developer.

    Cependant, le probleme est linsertion des donnees via un fichier.sql. Les accents en sont pas mis, les caracteres avec accents ne sont pas reconnus.

    Auriez vous une solution ?

    d'avance merci.

  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
    Points : 3 597
    Points
    3 597
    Par défaut
    Quel est l'exécutable qui traite le fichier sql ? sqlplus.exe, sqlplusw.exe ou quelque chose d'autre ?

    Pour vérifier la valeur de NLS_LANG dans une session SQL*Plus, utilisez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SQL> @[.%NLS_LANG%]
    SP2-0310: unable to open file "[.FRENCH_FRANCE.WE8MSWIN1252]"
    (le message d'erreur est la valeur de NLS_LANG)

    Que donne dans la session SQL qui ne fonctionne pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from nls_database_parameters;

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Février 2007
    Messages : 227
    Points : 161
    Points
    161
    Par défaut
    Bonjour,
    en ce qui concerne les accents je ne connais pas grands choses, mais pour l'insertion par de : D'ACCORD il faut l'inserer de cette manière D''ACCORD.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par pifor
    Quel est l'exécutable qui traite le fichier sql ? sqlplus.exe, sqlplusw.exe ou quelque chose d'autre ?
    lexecutable est sqlplus.exe.

    Citation Envoyé par pifor
    Pour vérifier la valeur de NLS_LANG dans une session SQL*Plus, utilisez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SQL> @[.%NLS_LANG%]
    SP2-0310: unable to open file "[.FRENCH_FRANCE.WE8MSWIN1252]"
    (le message d'erreur est la valeur de NLS_LANG)
    Apres verification, j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SQL> @[.%NLS_LANG%]
    SP2-0310: impossible d'ouvrir le fichier "[.FRENCH_FRANCE.WE8PC850]"
    Citation Envoyé par pifor
    Que donne dans la session SQL qui ne fonctionne pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from nls_database_parameters;
    Cela donne :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    SQL> select * from nls_database_parameters;
     
    PARAMETER                 VALUE
    ------------------------- -------------------------
    NLS_LANGUAGE              AMERICAN
    NLS_TERRITORY             AMERICA
    NLS_CURRENCY              $
    NLS_ISO_CURRENCY          AMERICA
    NLS_NUMERIC_CHARACTERS    .,
    NLS_CHARACTERSET          AL32UTF8
    NLS_CALENDAR              GREGORIAN
    NLS_DATE_FORMAT           DD-MON-RR
    NLS_DATE_LANGUAGE         AMERICAN
    NLS_SORT                  BINARY
    NLS_TIME_FORMAT           HH.MI.SSXFF AM
     
    PARAMETER                 VALUE
    ------------------------- -------------------------
    NLS_TIMESTAMP_FORMAT      DD-MON-RR HH.MI.SSXFF AM
    NLS_TIME_TZ_FORMAT        HH.MI.SSXFF AM TZR
    NLS_TIMESTAMP_TZ_FORMAT   DD-MON-RR HH.MI.SSXFF AM
                              TZR
     
    NLS_DUAL_CURRENCY         $
    NLS_COMP                  BINARY
    NLS_LENGTH_SEMANTICS      BYTE
    NLS_NCHAR_CONV_EXCP       FALSE
    NLS_NCHAR_CHARACTERSET    AL16UTF16
    NLS_RDBMS_VERSION         10.2.0.1.0
     
    20 ligne(s) sélectionnée(s).
    J'avais essayé de modifier le NLS_LANG mais je n'y arrive pas. Je pensais faire un update mais privilèges insuffisants même en tant que system. En tant que sys,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SQL> update nls_database_parameters
      2  set value='FRENCH'
      3  where parameter='NLS_LANGUAGE';
    set value='FRENCH'
        *
    ERREUR à la ligne 2 :
    ORA-01733: les colonnes virtuelles ne sont pas autorisées ici

  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
    Points : 3 597
    Points
    3 597
    Par défaut
    Vous ne pouvez pas modifier NLS_LANG avec une commande SQL (de plus, il ne faut jamais modifier directement une table ou une vue système).
    Sous Windows, NLS_LANG peut être modifié dans le registre Windows ou comme variable d'environnement avec la commande DOS set.

    Voir http://fadace.developpez.com/oracle/nls/

    Quelle est la version de la base Oracle ?
    Comme le jeu de caractères de la base est AL32UTF8, ça devrait marcher.
    Pouvez-vous donner un exemple de INSERT qui ne fonctionne pas avec le SELECT correspondant ?

  6. #6
    Membre habitué
    Inscrit en
    Juin 2003
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 107
    Points : 126
    Points
    126
    Par défaut
    Tu peux changer NLS_LANGUAGE seulement au niveau de session :

    ALTER SESSION
    SET NLS_LANGUAGE = FRENCH;

    Session modifiée.

  7. #7
    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
    Points : 3 597
    Points
    3 597
    Par défaut
    Attention: NLS_LANGUAGE est différent de NLS_LANG.

    Modifier NLS_LANGUAGE ne modifie que le language utilisé par Oracle pour les messages, le nom des jours et des mois ainsi que certains critères de tri pour les données caractères: il n'est qu'un composant de NLS_LANG dont seule la partie jeu de caractères est utilisée pour convertir les caractères entre le client Oracle et la base Oracle.

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par pifor
    Vous ne pouvez pas modifier NLS_LANG avec une commande SQL (de plus, il ne faut jamais modifier directement une table ou une vue système).
    Sous Windows, NLS_LANG peut être modifié dans le registre Windows ou comme variable d'environnement avec la commande DOS set.

    Voir http://fadace.developpez.com/oracle/nls/
    C'est ce que j'ai fait et dit plus dans mon premier post avec la commande dos.

    Citation Envoyé par pifor
    Quelle est la version de la base Oracle ?
    Comme le jeu de caractères de la base est AL32UTF8, ça devrait marcher.
    Pouvez-vous donner un exemple de INSERT qui ne fonctionne pas avec le SELECT correspondant ?
    Je possède sur ma machine Oracle 10g XE.
    Quant à l'exemple, c'est juste un fichier dans lequel je fais un insert avec des valeurs contenant des accents. Sous sqlplus, j'appelle ce fichier sql : @fichier.sql
    puis la requete pour voir la valeur, et les caracteres avec accents ne sont pas reconnus sinon bizarrement. Que ce soit sous dos, sql developer ou sur un navigateur.

  9. #9
    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
    Points : 3 597
    Points
    3 597
    Par défaut
    Cela peut dépendre de l'outil utilisé pour créer le fichier sql: quel est l'outil ?Peut-être les caractères sont déjà encodés en UTF8. Dans ce cas vous pouvez essayer de configurer NLS_LANG à Le fichier peut aussi être encodé en WIN1252, il faudrait aussi essayer de configurer NLS_LANG à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FRENCH_FRANCE.WE8MSINW1252
    Vous pouvez aussi essayer d'utiliser sqlplusw.exe car sqlplus.exe est parfois plus limité pour l'affichage que sqlplusw.exe.

    Même avec XE, NLS_LANG doit fonctionner comme la 10g complète:http://download-uk.oracle.com/docs/c...c.htm#BABGEEDF

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    toupi...ca marche pas sous dos.
    soit je ferai du copier coller et non plus des @fichier.sql
    soit j'utilise sqldeveloper pour cette commande.

    en tout cas , merci d'avoir passé du temps...

Discussions similaires

  1. [C#] Executer un fichier .SQL
    Par Thomas Lebrun dans le forum Accès aux données
    Réponses: 6
    Dernier message: 28/07/2009, 08h53
  2. [DB2] executer un fichier sql
    Par meufeu dans le forum DB2
    Réponses: 7
    Dernier message: 10/01/2009, 15h47
  3. passage de paramètres à un fichier SQL
    Par philfont dans le forum Administration
    Réponses: 5
    Dernier message: 30/08/2004, 15h01
  4. reHELP sur un fichier SQL
    Par asken dans le forum Langage SQL
    Réponses: 2
    Dernier message: 08/06/2003, 23h35
  5. Réponses: 2
    Dernier message: 26/02/2003, 11h47

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