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

  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 : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    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 : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    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 expérimenté 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
    Points : 1 332
    Points
    1 332
    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),

    asktom.oracle.com tahiti.oracle.com otn.oracle.com

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.


    phrase chinoise issue du Huainanzi

  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 : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    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 expérimenté 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
    Points : 1 332
    Points
    1 332
    Par défaut
    fais

    asktom.oracle.com tahiti.oracle.com otn.oracle.com

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.


    phrase chinoise issue du Huainanzi

  6. #6
    Membre averti 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 : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    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.
    "Wash me away Clean your body of me Erase all the memories They'll only bring us pain And I've seen All i'll ever need"

  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 : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    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

  8. #8
    Membre averti 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 : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    FILLER ne sert pas plutôt à ignorer uin champ de la table ? et non pas du fichier ?

    En plus tu spécifies un nom de champ avant le FILLER mais dans mon fichier je n'ai que des données, pas de noms de champs.

    J'ai bien essayé d'écrire TOTO FILLER mais ça ne fonctionne pas.
    "Wash me away Clean your body of me Erase all the memories They'll only bring us pain And I've seen All i'll ever need"

+ 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