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 :

SQLLDR : Charger un champ contenant des espaces ET null


Sujet :

SQL*Loader Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    tst
    tst est déconnecté
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Octobre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2005
    Messages : 10
    Par défaut SQLLDR : Charger un champ contenant des espaces ET null
    Bonjour,

    Je suis en version Oracle 10g, et j'ai des rejets lors du chargement d'un champ number (ORA-01722: invalid number). Le champ contient à la fois des espaces et la valeur null (vu avec Notepad++)
    Un trim dans le CTL ne corrige pas le problème.
    Quelqu'un aurait une idée ?

    Merci de votre aide.

  2. #2
    Membre éclairé Avatar de jamesleouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 522
    Par défaut
    Tu peux faire 2 requetes insert sur la même table (avec 2 conditions différentes), suivant si la valeur de ton champ est null, et la seconde si elle ne l'est pas (ou contient des blancs).

    Du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    INTO TABLE dept 
       WHEN recid = 1 
       (recid  FILLER POSITION(1:1)  INTEGER EXTERNAL,
        deptno POSITION(3:4)  INTEGER EXTERNAL, 
        dname  POSITION(8:21) CHAR) 
    INTO TABLE emp 
       WHEN recid <> 1 
       (recid  FILLER POSITION(1:1)   INTEGER EXTERNAL,
        empno  POSITION(3:6)   INTEGER EXTERNAL, 
        ename  POSITION(8:17)  CHAR, 
        deptno POSITION(19:20) INTEGER EXTERNAL)
    Sur cette page:
    http://download.oracle.com/docs/cd/B...96652/ch05.htm


    Chez toi ca ferait, un truc du genre
    into table TABLE
    WHEN champ IS NULL
    (blablabla)
    into table TABLE
    when champs = BLANKS
    (blabla)

    Ma syntaxe est fausse, mais ça te donne une piste :S

  3. #3
    tst
    tst est déconnecté
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Octobre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2005
    Messages : 10
    Par défaut
    Bonjour Jamesleouf et merci pour ta réponse.

    J'ai résolu mon problème en mettant un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "DECODE(ASCII(:mon_champ),32,null,:mon_champ)"
    dans mon CTL

    Merci encore

  4. #4
    Membre éclairé Avatar de jamesleouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 522
    Par défaut
    Dans le traitement ce decode fait quoi?
    Avant insertion en base, il modifie le null en blancs?

    Merci a toi d'avoir posté ta réponse.

  5. #5
    Membre Expert
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Par défaut
    Sinon un TRIM(Colonne) d'une colonne vide ramène NULL

  6. #6
    tst
    tst est déconnecté
    Membre habitué
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Octobre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Distribution

    Informations forums :
    Inscription : Octobre 2005
    Messages : 10
    Par défaut
    Le problème est ancien, mais de mémoire, le même champ contenait les deux caractères (espace et null), et l'insertion dans un champ numérique échouait. Le blanc est modifié en null avant insertion, accepté dans un champ numérique. Le trim supprime les espaces en début et fin de chaine, mais pas à l'intérieur d'un chaine. je pense que c'était plutôt un problème d'encodage.

Discussions similaires

  1. [D2006][BDE] Contenu d'un champ contenant des espaces
    Par paulfr dans le forum Bases de données
    Réponses: 3
    Dernier message: 14/01/2012, 01h19
  2. nom de table et de champs avec des espaces
    Par grinder59 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/05/2006, 17h30
  3. Paramètres contenants des espaces
    Par ujoodha dans le forum Linux
    Réponses: 1
    Dernier message: 12/05/2006, 12h29
  4. Renommer des fichiers contenant des espaces
    Par MatRem dans le forum Linux
    Réponses: 6
    Dernier message: 28/04/2006, 08h21
  5. insérer un champs contenant des apostrophes ou es guillemets
    Par renofx1 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 18/01/2006, 15h49

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