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

SQL*Loader - Comment ignorer une ligne?


Sujet :

Sql*Plus Oracle

  1. #1
    Membre habitué Avatar de domiq44
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 301
    Points : 135
    Points
    135
    Par défaut SQL*Loader - Comment ignorer une ligne?
    Bonjour,

    Je dois charger le contenu d'un fichier texte de longueur fixe dans des tables.

    Le type d'enregistrement est déterminé par la valeur de la donnée positionnée entre la colonne 3 et 4 (3:4).

    Le choix de la table et le découpage de la ligne est donc réalisé selon ce type d'enregistrement.

    Le chargement se passe bien.

    Mais la commande sqlldr (SQL*Loader sous UNIX) retourne 1 au lieu de 0 car certains enregistrements ne sont pas chargés; et c'est ce que je veux!!!

    Mon problème est le comment ignorer certains type d'enregsitrement dans mon fichier de controle afin que sqlldr retourne 0?

    Merci.

  2. #2
    Membre habitué Avatar de domiq44
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 301
    Points : 135
    Points
    135
    Par défaut
    Voici un exemple concret.

    Fichier de données "data.txt" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    00Jaouad              100
    00orafrance           200
    00léoanderson         300
    00bouyao              400
    99Nuke_y              500
    00sheikyerbouti       600
    00pomalaix            700
    00titides             800
    00aline               900
    00denisys            1000
    00niourk             1100
    Le fichier de controle "sample.ctl" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    LOAD DATA INFILE 'data.txt'
    TRUNCATE
    INTO TABLE MYTABLE
    WHEN (1:2) = '00'
    (
        NOM position (3:21),
        SALAIRE position (22:26)
    )
    et le fichier shell script "sample.sh" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #!/bin/sh
    sqlldr userid=user/pswd control=sample.ctl log=log.txt bad=bad.txt discard=disard.txt direct=y errors=0
    rc=$?
    echo "sqlldr returns $rc"
    Ma question : Comment ne pas charger les données dont la ligne commence par "99" ?

    Ma table se charge bien, mais j'obtiens ça, indiquant un warning, et moi je n'en veux pas!!! :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    infoexpl2 x049125 /home/x049125/domiq/loader # sample.sh
     
    SQL*Loader: Release 10.2.0.3.0 - Production on Thu Apr 10 13:44:58 2008
     
    Copyright (c) 1982, 2005, Oracle.  All rights reserved.
     
     
    Load completed - logical record count 11.
    sqlldr returns 2
    Merci.

Discussions similaires

  1. [SQL QUERY] Comment extraire les lignes enfants d'une table ?
    Par gauthierb dans le forum Langage SQL
    Réponses: 1
    Dernier message: 20/05/2014, 10h19
  2. Réponses: 2
    Dernier message: 26/01/2012, 15h18
  3. SQL*Loader - Comment ignorer une ligne?
    Par domiq44 dans le forum SQL
    Réponses: 1
    Dernier message: 10/04/2008, 13h22
  4. Réponses: 1
    Dernier message: 08/03/2007, 12h35
  5. Réponses: 3
    Dernier message: 21/01/2004, 08h47

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