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 :

Sql Loader - probleme de chargement de la valeur espace ' '


Sujet :

SQL*Loader Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 49
    Par défaut Sql Loader - probleme de chargement de la valeur espace ' '
    Bonjour,
    voila mon probleme: je veux charger une valeur espace (vide) dans une colonne not null
    Sql loader considère que c'est un champs null, et la colonne consernée elle peut pas etre null
    quelqu'un peut m'aider svp

  2. #2
    Membre éclairé
    Inscrit en
    Novembre 2004
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 312
    Par défaut
    Bonjour,

    Peut on connaitre votre version d'Oracle ainsi que le contenu de votre fichier de controle ?

  3. #3
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 49
    Par défaut
    version Oracle 9.2.0

    mon fichier de control est comme suit:
    LOAD DATA
    Append
    INTO TABLE COUNTRY
    FIELDS TERMINATED BY ";" OPTIONALLY ENCLOSED BY '"'
    TRAILING NULLCOLS

    (

    COUNTRY_ID
    , ISO
    , NAME
    , COUNTRY_CODE
    , COUNTRY_DEF
    , ENTRYDATE DATE "DD/MM/YYYY HH24:MI:SS"
    ......
    )

    Merci

  4. #4
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 49
    Par défaut
    J'ajoute juste ke je passe le fichier data en ligne de commande, voici un exemple des ligne de ce fichier :
    12;GUF;FRENCH GUIANA;254; ;05/02/1998 14:54:05;0;254;254 ................

    mon problème c'est que je veux charger la valeur du 5eme champs de cette ligne sur la colonne : COUNTRY_DEF
    cette colonne ne peut être null

    le message d'erreur est le suivant:
    ORA-01400: cannot insert NULL into ("SYSADM"."COUNTRY"."COUNTRY_DEF")

    merci

  5. #5
    Membre éclairé
    Inscrit en
    Novembre 2004
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 312
    Par défaut
    Voila ce que dit la doc :
    Loading Trailing Blanks with Delimiters
    Trailing blanks are not loaded with nondelimited datatypes unless you specify PRESERVE BLANKS. If a data field is 9 characters long and contains the value DANIELbbb, where bbb is three blanks, it is loaded into the Oracle database as "DANIEL" if declared as CHAR(9).

    If you want the trailing blanks, you could declare it as CHAR(9) TERMINATED BY ':', and add a colon to the datafile so that the field is DANIELbbb:. This field is loaded as "DANIEL ", with the trailing blanks. You could also specify PRESERVE BLANKS without the TERMINATED BY clause and obtain the same results.
    Essaye de placer le mot clé PRESERVE BLANKS

  6. #6
    Membre éclairé
    Inscrit en
    Novembre 2004
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 312
    Par défaut
    Merci pour l'exemple de ligne à insérer !!!

    Dans ce cas, ca ne marchera pas car votre colonne n'est pas délimitée par de simple côtes dans le fichier de données et ne représente aucune valeur particulière !!!

    Il vous faut utiliser le mot clé CONSTANT :

    CONSTANT Parameter
    To set a column to a constant value, use CONSTANT followed by a value:

    CONSTANT value

    CONSTANT data is interpreted by SQL*Loader as character input. It is converted, as necessary, to the database column type.

    You may enclose the value within quotation marks, and you must do so if it contains whitespace or reserved words. Be sure to specify a legal value for the target column. If the value is bad, every record is rejected.

    Numeric values larger than 2^32 - 1 (4,294,967,295) must be enclosed in quotation marks.


    --------------------------------------------------------------------------------
    Note:
    Do not use the CONSTANT parameter to set a column to null. To set a column to null, do not specify that column at all. Oracle automatically sets that column to null when loading the record. The combination of CONSTANT and a value is a complete column specification.


  7. #7
    Membre éclairé
    Inscrit en
    Novembre 2004
    Messages
    312
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 312
    Par défaut
    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
    LOAD DATA
    Append
    INTO TABLE COUNTRY
    FIELDS TERMINATED BY ";" OPTIONALLY ENCLOSED BY '"'
    TRAILING NULLCOLS 
    
    ( 
    
    COUNTRY_ID
    , ISO
    , NAME
    , COUNTRY_CODE
    , COUNTRY_DEF CONSTANT ' '
    , ENTRYDATE DATE "DD/MM/YYYY HH24:MI:SS"
    ......
    )

  8. #8
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 49
    Par défaut
    PRESERVE BLANKS au niveau de fichier de controle ça marche pas, problème de syntaxe

    pour le CONSTANT, je crois pas que ça va marcher, parce que ma ligne peut contenir d'autre valeur comme ci-dessou:

    81;DMA;DOMINICA;212;X;20/10/2003 17:38:47;0;212;.............


    je vais essayé la troisième proposition, celle avec TERMINITED BY !!

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 31/03/2008, 14h31
  2. SQL Loader : erreur de chargement de données
    Par Jefdebruges dans le forum SQL*Loader
    Réponses: 6
    Dernier message: 22/06/2007, 11h23
  3. Sql*loader : Pb de chargement
    Par sabchris dans le forum Oracle
    Réponses: 6
    Dernier message: 18/06/2007, 13h03
  4. SQL loader probleme oracle 9i
    Par DBA_doom dans le forum SQL*Loader
    Réponses: 5
    Dernier message: 22/05/2007, 13h16
  5. [SQL*Loader] Problème de chargement de nombres
    Par sebduth dans le forum Oracle
    Réponses: 10
    Dernier message: 18/11/2005, 10h07

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