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 : comment spécifier/contrôler le nombre de colonne à charger?


Sujet :

SQL*Loader Oracle

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut SQL Loader : comment spécifier/contrôler le nombre de colonne à charger?
    Bonjour,

    Je souhaite charger un fichier de données en base (oracle 9i) via sql loader :

    le fichier de type "csv" doit :
    - avoir des ";" comme séparation entre les données : ca c'est ok, j'utilise <FIELDS TERMINATED BY ';'>
    - je doit pouvoir charger des données nulles : ca c'est OK, j'utilise <TRAILING NULLCOLS>

    Par contre, le nombre de colonnes d'une ligne à charger doit toujours être le même, aussi si ce n'est pas le cas dans certaines lignes du fichier, j'aimerais que ca parte en erreur pour ces lignes. Le problème c'est que je ne sais pas comment effectuer ce contrôle, ou spécifier le nombre de colonne à charger.

    Comment faire?

  2. #2
    Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut précision
    je dois pouvoir charger des lignes de données avec des colonnes vides

  3. #3
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 73
    Points : 60
    Points
    60
    Par défaut
    As - tu pensé à une table externe?

  4. #4
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par reeds95 Voir le message
    ...
    - je doit pouvoir charger des données nulles : ca c'est OK, j'utilise <TRAILING NULLCOLS>

    Par contre, le nombre de colonnes d'une ligne à charger doit toujours être le même, aussi si ce n'est pas le cas dans certaines lignes du fichier, j'aimerais que ca parte en erreur pour ces lignes. Le problème c'est que je ne sais pas comment effectuer ce contrôle, ou spécifier le nombre de colonne à charger.

    Comment faire?
    Le TRAILING NULLCOLS n'est pas pour charger des données nulles mais plutôt pour le contraire de ce que vous en avez besoin. Donc supprimez-le.

  5. #5
    Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut TAo
    en fait, je passe par une Table temporaire avant de charger en base, où j'effectue divers contrôle.

    De plus, j'utilisais le "trailing" au cas où il y a des colonnes vides dans le fichier : comme ce fichier : "CHE;RCE_ENT;94599099;;LENT;;;;;;;"

    Si j'enlève le trailing comment gérer le ";;" ?

  6. #6
    Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut mon code
    voici mon code :


    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
    18
    19
    20
    21
    22
    23
    24
       OPTIONS (SILENT=(HEADER,FEEDBACK))
       Load DATA CHARACTERSET WE8ISO8859P1 
       TRUNCATE
       INTO TABLE *
       WHEN (COMPANY_TYPE!=BLANKS) AND (BO_NAME!=BLANKS) AND (CUST_STATUS!=BLANKS) 
       FIELDS TERMINATED BY ';'
       TRAILING NULLCOLS
       (
    -- Fields from file ----------------------------------
    a1         		BOUNDFILLER,    
    a2		BOUNDFILLER,
    a3    		BOUNDFILLER,
    .
    .
    .
    .
     
    --Fields caculated ----------------------------------
    aa1        	CHAR "nvl (:a1,' ')",    
    aa2		CHAR "nvl(:a2,' ')",
    aa3    	             CHAR "nvl(:a3,' ')",
    .
    .
    )

  7. #7
    Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Points : 3
    Points
    3
    Par défaut solution
    c'est bon finalement :

    faire un ksh de lancement du sql loader.
    avant le traitement, remplacer (par la commande "sed") dans le fichier à charger les ";;" par "; ;"

    et dans le loader pour les champs de type NUMBER, faire un decode pour remplacer les "; ;" par "0".

  8. #8
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par reeds95 Voir le message
    c'est bon finalement :

    faire un ksh de lancement du sql loader.
    avant le traitement, remplacer (par la commande "sed") dans le fichier à charger les ";;" par "; ;"

    et dans le loader pour les champs de type NUMBER, faire un decode pour remplacer les "; ;" par "0".
    J'ai bien peur que toute cella ne servent à rien .

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

Discussions similaires

  1. SQL*Loader - Comment ignorer une ligne?
    Par domiq44 dans le forum Sql*Plus
    Réponses: 1
    Dernier message: 10/04/2008, 13h23
  2. SQL*Loader - Comment ignorer une ligne?
    Par domiq44 dans le forum SQL
    Réponses: 1
    Dernier message: 10/04/2008, 13h22
  3. Réponses: 3
    Dernier message: 03/05/2007, 11h06
  4. Réponses: 1
    Dernier message: 08/03/2007, 12h35
  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