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*Loader Oracle Discussion :

Chargement champs numériques depuis csv


Sujet :

SQL*Loader Oracle

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10
    Par défaut Chargement champs numériques depuis csv
    Bonjour,
    J'ai un souci en voulant charger des données numeriques depuis un fichier CSV

    Exemple du CSV:

    I ;1993;3;1017.0;0.88999999;0.0;46;0.0;
    I ;1993;4;1016.0;1.09;0.0;46;0.0;
    I ;1994;1;1016.0;-0.58999997;0.0;46;0.0;
    I ;1994;2;1018.0;0.58999997;0.0;46;0.0;
    I ;1994;3;1020.0;0.28999999;0.0;46;0.0;
    I ;1994;4;1019.0;0.30000001;0.0;46;0.0;
    I ;1995;1;1011.0;-0.49000001;0.0;46;0.0;

    Mon fichier control :

    LOAD DATA
    TRUNCATE
    INTO TABLE B_Indrev
    FIELDS TERMINATED BY ';' TRAILING NULLCOLS
    (
    CRE_TYPE_INDICE,
    CRE_ANNEE,
    CRE_NO_TRIMESTRE,
    CRE_VALEUR_INDICE "to_number(:CRE_VALEUR_INDICE,'9999999D99','NLS_NUMERIC_CHARACTERS= '',.''')",
    CRE_TAUX decimal external "to_number(:CRE_TAUX,'L999D99999999999','NLS_NUMERIC_CHARACTERS= '',.''')",
    CRE_MOY_TAUX "to_number(:CRE_MOY_TAUX,'9999999D9999999999','NLS_NUMERIC_CHARACTERS= '',.''')",
    CRE_TRAIT,
    CRE_MOYENNE "to_number(:CRE_MOYENNE,'9999999D999999999','NLS_NUMERIC_CHARACTERS= '',.''')",
    CRE_CLASSE_REVISION
    )

    Et enfin la définition de ma table dans Oracle
    CRE_TYPE_INDICE NOT NULL CHAR(3 CHAR)
    CRE_ANNEE NOT NULL NUMBER(5)
    CRE_NO_TRIMESTRE NOT NULL NUMBER(5)
    CRE_VALEUR_INDICE FLOAT(126)
    CRE_TAUX FLOAT(126)
    CRE_MOY_TAUX FLOAT(126)
    CRE_TRAIT NOT NULL RAW(1)
    CRE_MOYENNE FLOAT(126)
    CRE_CLASSE_REVISION NOT NULL CHAR(1 CHAR)

    J'ai systematiquement une erreur sur ma valeur CRE_TAUX
    Merci pour votre aide

  2. #2
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    Bonjour,

    Ce cesait plus explicite si tu envoyait l'erreur

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10
    Par défaut
    Le message que j'ai en retour est :
    Enregistrement 1 : Rejeté - Erreur sur table B_INDREV, colonne CRE_TAUX.
    ORA-01722: Nombre non valide

  4. #4
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    tu as un exemple ici

    en changeant les parametres WINDOWS ou UNIX

    http://www.developpez.net/forums/d33...e-p-sqlloader/

    tu peux aussi créer un trigger

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Create or replace trigger global_nls_session_settings after logon on database
    Begin
    execute immediate 'alter session set nls_numeric_characters=",."';
    end;

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 175
    Par défaut
    tu es sûr que ton NLS_NUMERIC_CHARACTERS est bon ? normalement c'est le séparateur décimal en premier, puis le séparateur des milliers
    donc si tes nombres sont du style "100.0" ton NLS_NUMERIC_CHARACTERS devrait être ".,"

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10
    Par défaut
    Merci,
    En effet le NLS_NUMERIC_CHARACTERS était inversé
    j'avais mis ',.' au lieu de '.,'

    Merci encore

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

Discussions similaires

  1. PROBLEME : Forcer la saisie des Champs numériques!!!!!
    Par Grozeil dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 31/03/2005, 15h22
  2. Champs numériques dans une base de données à exporter
    Par ulukahio dans le forum Autres langages
    Réponses: 18
    Dernier message: 16/03/2005, 10h50
  3. Formatage d'un champ numérique
    Par portu dans le forum Bases de données
    Réponses: 8
    Dernier message: 07/07/2004, 15h04
  4. [MSDE 2000] Récup champ text depuis proc stockée
    Par Air'V dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/12/2003, 19h47

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