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 :

Sql*loader et zone varchar(30)


Sujet :

Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 7
    Par défaut Sql*loader et zone varchar(30)
    Mon sqlload se plante ave le problème suivant :

    enregistrement 348882 : Rejeté - Erreur sur table OR_ADRESSES, colonne LIGNE_SUPPLEMENTAIRE.
    ORA-12899: valeur trop grande pour la colonne LIGNE_SUPPLEMENTAIRE (réelle : 32, maximum : 30)

    Pourtant le texte à loader dans la colonne est
    :

    P.A. SERVICE DU TUTEUR GéNéRAL

    Il a pourtant 30 de longueur et pas 32.
    Es-ce à cause des 2 é minuscule ????

    Merci de vos lumières.

  2. #2
    Membre éclairé
    Inscrit en
    Novembre 2002
    Messages
    549
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 549
    Par défaut
    pas d'espaces en fin de chaine ?

  3. #3
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    Quel est la valeur de NLS_CHARACTERSET de la base de données ?

  4. #4
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    Faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select vsize('P.A. SERVICE DU TUTEUR GéNéRAL') from dual
    pour avoir la longueur de la chaîne

  5. #5
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 7
    Par défaut
    Citation Envoyé par PpPool
    pas d'espaces en fin de chaine ?
    NON

  6. #6
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 7
    Par défaut
    Citation Envoyé par Garuda
    Quel est la valeur de NLS_CHARACTERSET de la base de données ?
    AL32UTF8

  7. #7
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 7
    Par défaut
    VSIZE('P.A.SERVICEDUTUTEURGÉNÉRAL')
    32

    Pourquoi ???

  8. #8
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    Explication approximative !
    Tu es en UNICODE multibyte, donc 1 caractére accentué -> 2 octets
    Citation Envoyé par oracle METALINK
    B.1) Storage:
    -------------

    AL32UTF8 is a varrying width characterset, wich means that the code for a
    character can be 1 , 2 , 3 or 4 bytes long.

    This is a big difference with charactersets like WE8ISO8559P1 or WE8MSWIN1252.
    There a character always 1 byte.

    US7ASCII characters (A-Z,a-Z,0-1 and ./?,*# etc..) are in UTF8 1 byte, so for
    most West european languages the impact is rather limited as only "special"
    characters like ç, ñ , é will use more bytes then in a 8 bit characterset.
    But if you convert a Cyrillic or Arabic system to AL32UTF8 then the data will
    take considerable more bytes to store.

    source Metalink Note:119119.1

  9. #9
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 7
    Par défaut
    En règle général, vous mettez lequel ???

  10. #10
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    Si tu n'as pas de langues "exotiques" à gérer ensemble (arabe, chinois, etc)
    UTF8 (10G)
    ou
    WE8ISO8559P1 (8i,9i,10G)

    Sinon
    AL32UTF8 (la valeur par défaut)

    ATTENTION :
    Avant de changer ce paramètre dans ta base et si tu as des données existantes, sois extrémement prudent.
    Il faut faire beaucoup de manips (selon les cas) AVANT/APRES la modif pour que les données ne soient pas foutues en l'air.
    Lire TOUTE la littérature sur ce problème sur METALINK et ne le faire faire que par un utilisateur averti (moi-même, je ne m'y risquerais pas)!!

  11. #11
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 7
    Par défaut
    Comment faut-il faire pour changer le character_set ??

    Merci d'avance de toutes vos réponse.

  12. #12
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    Données existantes ou pas ?

  13. #13
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 7
    Par défaut
    Pas de problème je peux les recréer.
    précision version oracle(10g)

  14. #14
    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
    Quelques précisions:
    attention WE8ISO8859P1 ne contient pas le caractère euro (la liste des jeux de caractères comportant le caractère euro est ).

    La façon la plus sûre de changer de jeu de caractères est de recréer une base et de faire un export/import. Vous pouvez aussi consulter le Globalization Guide à ce sujet avant de vous plonger dans les notes Metalink.

  15. #15
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    Alors recrée toute ta base à partir de ZERO ( en choisissant l'option PERSONNALISEE).
    Mais modifie les valeurs par défaut dans le 'WIZARD' de création afin de mettre
    UTF8 ou WE8ISO8559P1 ou autre

  16. #16
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    Euh...

    Je ne suis pas sur q'UTF8 soit 'mono' byte. A verifier !

  17. #17
    Membre Expert Avatar de Garuda
    Homme Profil pro
    Chef de projet / Urbaniste SI
    Inscrit en
    Juin 2007
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet / Urbaniste SI
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 285
    Par défaut
    je pense finalement qu'UTF8 ne va pas !
    Moi je prendrais

    WE8ISO8859P15

  18. #18
    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
    Il n'est pas forcément nécessaire de recréer une base car il existe aussi une possibilité de recréer les tables en utilisant la sémantique longueur en caractère au lieu de la sémantique longueur en octet.

    Exemple:
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    SQL> 
    SQL> select * from v$version;
     
    BANNER                                                                          
    ----------------------------------------------------------------                
    Oracle Database 10g Express Edition Release 10.2.0.1.0 - Product                
    PL/SQL Release 10.2.0.1.0 - Production                                          
    CORE	10.2.0.1.0	Production                                                      
    TNS for 32-bit Windows: Version 10.2.0.1.0 - Production                         
    NLSRTL Version 10.2.0.1.0 - Production                                          
     
    SQL> select * from nls_database_parameters where parameter like '%SET%';
     
    PARAMETER                                                                       
    ------------------------------                                                  
    VALUE                                                                           
    --------------------------------------------------------------------------------
    NLS_CHARACTERSET                                                                
    AL32UTF8                                                                        
     
    NLS_NCHAR_CHARACTERSET                                                          
    AL16UTF16                                                                       
     
     
    SQL> 
    SQL> drop table tc;
     
    Table dropped.
     
    SQL> drop table tb;
     
    Table dropped.
     
    SQL> 
    SQL> create table tb (c varchar2(5 byte));
     
    Table created.
     
    SQL> insert into tb values ('ééééé');
    insert into tb values ('ééééé')
                           *
    ERROR at line 1:
    ORA-12899: value too large for column "TEST"."TB"."C" (actual: 10, maximum: 5) 
     
     
    SQL> create table tc (c varchar2(5 char));
     
    Table created.
     
    SQL> insert into tc values ('ééééé');
     
    1 row created.
     
    SQL> select vsize(c) from tc;
     
      VSIZE(C)                                                                      
    ----------                                                                      
            10                                                                      
     
    SQL> 
    SQL> exit
    Voir le Globalization Guide.

Discussions similaires

  1. équivalent SQL*Loader pour FB / IB
    Par djeant dans le forum Outils
    Réponses: 9
    Dernier message: 10/01/2005, 21h26
  2. Chargement de fichier par SQL LOADER
    Par davy.g dans le forum SQL*Loader
    Réponses: 17
    Dernier message: 15/11/2004, 13h08
  3. SQL LOADER
    Par velo83 dans le forum SQL*Loader
    Réponses: 2
    Dernier message: 25/10/2004, 08h24
  4. Réponses: 4
    Dernier message: 10/06/2004, 18h05
  5. erreur sql loader et performance
    Par mobisky dans le forum SQL*Loader
    Réponses: 14
    Dernier message: 20/08/2003, 12h27

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