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

[SQL Loader] Ignorer le traitement d'une colonne


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut [SQL Loader] Ignorer le traitement d'une colonne
    Bonjour,

    J'utilise SQL*Loader pour charger des données dans une table.
    Dans cette table, j'ai un champ qui s'appelle COMMENTAIRES, qui est de type varchar2(500).
    J'ai décidé que cette colonne ne serait plus remplie par SQL*Loader.
    J'ai donc écrit mon fichier de controle ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Options (BindSize=10000000,Readsize=10000000,Rows=5000,Errors=100)
      Load Data
      Infile 'XXX.txt'
      Append into table T_XXX
      Fields Terminated By ';' 
      TRAILING NULLCOLS 
    (
        ...
        COMMENTAIRES FILLER,
        ...
    )
    Effectivement, avec ce code, le champ COMMENTAIRES est ignoré par SQL*Loader, puisque la valeur en base est bien null.

    Toutefois, si dans mon fichier le champ correspondant à COMMENTAIRES fait plus de 500 caractères, alors SQL*Loader me fait une erreur lors du traitement de cette ligne :

    Record 2: Rejected - Error on table T_XXX, column COMMENTAIRES.
    Field in data file exceeds maximum length
    Y a t-il un moyen pour que SQL Loader ne traite vraiment pas mon champ COMMENTAIRES ?
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  2. #2
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    La réponse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Options (BindSize=10000000,Readsize=10000000,Rows=5000,Errors=100)
      LOAD DATA
      INFILE 'XXX.txt'
      Append INTO TABLE T_XXX
      FIELDS Terminated BY ';' 
      TRAILING NULLCOLS 
    (
        ...
        COMMENTAIRES FILLER CHAR(4000),
        ...
    )
    L'explication : Par défaut, la lecture d'un champ par SQL*Loader est par défaut limitée à 500 caractères. En spécifiant une plus grande valeur (ici, 4000), l'erreur n'est plus levée, et l'enregistrement est correctement inséré en base (avec COMMENTAIRES à null, bien sûr).
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  3. #3
    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,

    Le datatype par defaut est 255 avec sqlloader

    alors tu peux faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Options (BindSize=10000000,Readsize=10000000,Rows=5000,Errors=100)
      LOAD DATA
      INFILE 'XXX.txt'
      Append INTO TABLE T_XXX
      FIELDS Terminated BY ';' 
      TRAILING NULLCOLS 
    (
        ...
        COMMENTAIRES FILLER CHAR (500),

  4. #4
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Merci pour ta réponse fatsora, mais ce code ne marchera pas si mon commentaire excède 500 caractères. Il me faut donc une valeur plus élevée...

    Quoique mon code ne fonctionnera pas si le commentaire est plus long que 4000 caractères, mais bon ...

    Si quelqu'un a une méthode pour dire "Bon SQLLoader, tu vois, ce champ COMMENTAIRES, tu l'ignores. Il n'existe même pas pour toi. Alors tu vas au prochain ';' que tu rencontres, où qu'il soit, et tu dis rien. Nada.", sans spécifier de taille, je suis prenneur
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  5. #5
    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
    fais

  6. #6
    Membre éclairé Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Par défaut
    Bonjour,

    j'ai le problème inverse. Je souhaite ignorer un champ du fichier d'entrée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    aaa;bbb;ccc
    ddd;eee;fff
    ggg;hhh;iii
    Je ne souhaite pas que Sql*Loader traite tout ce qu'il y a avant le premier point virgule. Est-ce possible ?

    Merci d'avance

    PS : Je n'ai pas la possibilité de modifier le fichier.

  7. #7
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Par défaut
    Il suffit pour cela d'utiliser le mot clé FILLER pour ce que tu souhaites ignorer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Option ... (
        PREMIER_CHAMP FILLER,
        DEUXIEME_CHAMP ...
    )
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

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

Discussions similaires

  1. [SQL Loader] Ignorer certaines colonnes
    Par romaintaz dans le forum SQL
    Réponses: 1
    Dernier message: 02/06/2009, 17h06
  2. requete sql pour vider le contenu d'une colonne d'une table
    Par Sheppard38 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 26/06/2007, 14h20
  3. Réponses: 4
    Dernier message: 19/06/2007, 17h51
  4. Réponses: 2
    Dernier message: 07/10/2006, 19h46
  5. [sql 2005]: changer le nom d'une colonne dans un table
    Par TheLittle dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/06/2006, 15h29

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