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 :

Données nulles non chargées avec Trailing nullcols


Sujet :

SQL*Loader Oracle

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 23
    Par défaut Données nulles non chargées avec Trailing nullcols
    Bonjour,

    J'ai un souci avec l'import de données nulles. Alors je sais, vous allez me dire d' utiliser TRAILING NULLCOLS ... ce que je fais .... Mais au lieu d'intégrer ma donnée avec la valeur nulle celà décale les autres colonnes ...

    Afin d'être plus clair voici ma table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    -- ------------------------------------------------------------
    -- tables des arrondissements INSEE
    -- ------------------------------------------------------------
     
    CREATE TABLE GEO_ARRONDISSEMENT (
      GEO_ARRONDISSEMENT_code CHAR(5)   NOT NULL ,
      GEO_TNCC_code CHAR(1)   NOT NULL ,
      ARTMAJ VARCHAR(8)    ,
      NCC VARCHAR(255)    ,
      ARTMIN VARCHAR(8)    ,
      NCCENR VARCHAR(255)      ,
    PRIMARY KEY(GEO_ARRONDISSEMENT_code),
      FOREIGN KEY(GEO_TNCC_code)
        REFERENCES GEO_TNCC(GEO_TNCC_code));

    Voici aussi le code de mon fichier de contrôle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    LOAD DATA
    REPLACE 
    INTO TABLE GEO_ARRONDISSEMENT
    FIELDS TERMINATED BY '\t' 
    OPTIONALLY ENCLOSED BY '"'
    TRAILING NULLCOLS 
    (GEO_ARRONDISSEMENT_CODE,
    GEO_TNCC_code,
    ARTMAJ,
    NCC,
    ARTMIN,
    NCCENR
    )
    voici un exemple de ce que je peux avoir dans mon fichier arrondissement.txt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    AROND	TNCC	ARTMAJ	NCC	ARTMIN	NCCENR
    01001	0		BELLEY		Belley
    01002	0		BOURG-EN-BRESSE		Bourg-en-Bresse
    01003	0		GEX		Gex
    01004	0		NANTUA		Nantua
    02001	0		CHATEAU-THIERRY		Château-Thierry
    .....
    17003	3	(LA)	ROCHELLE	(La)	Rochelle
    .....
    43002	2	(LE)	PUY-EN-VELAY	(Le)	Puy-en-Velay
    vous l'aurez compris, le problème vient des colonnes ARTMAJ et ARTMIN qui sont vides pour la plupart des lignes sauf certains arrondissement.
    Quand je fais mon import je n'ai pas d'erreurs de colonnes nulles (ce qui m'indique que Trailing Nullcols fonctionne [bien ?] puisque qu'avant de l'utiliser j'avais des erreurs) par contra j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Enregistrement 2 : Rejeté - Erreur sur table GEO_ARRONDISSEMENT, colonne ARTMAJ.
    ORA-12899: valeur trop grande pour la colonne "OREF"."GEO_ARRONDISSEMENT"."ARTMAJ" (réelle : 15, maximum : 8)
    Ce qui me fait dire que Trailing nullcols au lieu de m'insérer une valeur nulle quand ARTMIN ET ARTMAJ sont vides me décale les autre colonnes ...

    Comment faire pour importer correctement ce fichier ?
    merci d'avance.

    Guillaume

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 23
    Par défaut
    OK ... j'ai trouvé d'où venait le problème ...

    Donc si ça arrive à quelqu'un d'autre :

    Le fichier à plat était un .txt avec tabulation comme séparateur et sans double quote ' " 'pour encadrer les données. Donc je pense que SQLLDR ne devait interpréter l'absence de données comme une donnée nulle mais devait passer directement à la donnée suivante de l'enregistrement .... d'où le décalage des données ...

    J'ai réenregistré la fichier en .csv avec pt virgule comme séparateur et là pour le coup SQLLDR interprète bien une abscence de donnée sur la colonne ARTMIN et donc insère null dans la table !

    Voilà ... en espérant que ça puisse aider du monde.


    PS : si quelqu'un pouvait qd même m'aider sur l'import de fichier avec tabulation en séparateur ça serait sympa ça m'eviterait d'avoir à réenregistrer mes 250 fichiers ....

    A+
    Guillaume

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3
    Par défaut tabulation
    Pour les tabulations j'utilise FIELDS TERMINATED by X'09'
    ce qui fonctionne bien... mais j'ai aussi un problème lorsque mon champs date est vide...

    Si quelqu'un a une idée, je suis preneur !

    mon champs begindate fonctionne :
    "B_DATE" "to_date(:B_DATE,'MON DD YYYY','NLS_DATE_LANGUAGE = ''English''')"

    mais celui enddate est parfois null, et là ça plante :

    "E_DATE" "to_date(:E_DATE,'MON DD YYYY','NLS_DATE_LANGUAGE = ''English''') NULLIF :E_DATE=BLANKS"
    Enregistrement 1 : Rejeté - Erreur sur table "TFRC_TRMTH", colonne "E_DATE". ORA-00917: virgule absente

    j'ai fait beaucoup d'autres essais avec plein de syntaxe différentes mais rien à faire :-(

    Finalement : ce code fonctionne si j'utilise le pipe comme séparateur, mais pas si je laisse la tabulation ! Je dois donc modifier les fichiers à importer en cas de colonnes nulles qui ne sont pas des NUMBER (avec number on peut utiliser le mot clef NULLIF).
    FIELDS TERMINATED by '|'
    "E_DATE" "decode(:E_DATE, null, null, to_date(:E_DATE,'MON DD YYYY','NLS_DATE_LANGUAGE = ''English'''))"

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

Discussions similaires

  1. Image non chargée avec accent dans chemin
    Par KRis dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 04/01/2010, 16h56
  2. Problème de base de données ACCESS non reconnue avec ASP
    Par Therambok dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 05/01/2009, 17h38
  3. Réponses: 4
    Dernier message: 14/01/2008, 00h15
  4. Réponses: 2
    Dernier message: 07/12/2007, 08h44
  5. Réponses: 4
    Dernier message: 03/08/2007, 14h55

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