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 :

Chargement via SQL Loader de données issues de requete SQL


Sujet :

SQL*Loader Oracle

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Chargement via SQL Loader de données issues de requete SQL
    Bonjour,

    j'essaie de charger des données issues d'un fichier plat, pour l'un des champs à charger je suis obligé de réaliser une addition du chiffre contenu dans le fichier de chargement et du résultat d'un requête.

    mon fichier de control se présente comme ci-dessous :

    LOAD DATA
    INFILE INTERF
    APPEND
    INTO TABLE INTG
    (
    COLLCOD position(001:003) CHAR,
    BUDGEXE position(004:007) ZONED EXTERNAL,
    COLBCODBUD position(008:009) ZONED EXTERNAL,
    OBJECODNAT position(010:010) CHAR,
    INTGCODAPP position(011:013) CHAR,
    INTGNUM position(014:021) DECIMAL EXTERNAL "to_number(nvl(select max(INTGNUM) from INTG,0)) + :INTGNUM",
    INTGLIG position(022:027) ZONED EXTERNAL,
    SECUMDP position(028:032) CHAR,
    INTGPHASE position(033:033) CHAR,
    INTGBASTIER position(034:034) CHAR,
    TIERNUM position(035:041) ZONED EXTERNAL,
    DOMINUM position(042:043) ZONED EXTERNAL,
    CNEGBASFOR position(044:044) CHAR,
    CNEGBASPAI position(045:045) CHAR,
    CNEGDATECH position(046:053) ZONED EXTERNAL,
    CNEGTYPBORD position(054:054) CHAR,
    CHAPCOD position(055:059) CHAR,
    SCHACOD position(060:066) CHAR,
    ARTICOD position(067:076) CHAR,
    PROGNUM position(077:086) ZONED EXTERNAL,
    SERVCOD position(087:093) CHAR,
    ENVEANN position(094:097) ZONED EXTERNAL,
    ENVECOD position(098:107) CHAR,
    SCPGNUM position(108:117) ZONED EXTERNAL,
    ECEGNUM position(118:124) ZONED EXTERNAL,
    ECDGLIG position(125:127) ZONED EXTERNAL,
    OPEGANN position(128:131) ZONED EXTERNAL,
    OPEGCOD position(132:136) CHAR,
    OPEGNUM position(137:146) ZONED EXTERNAL,
    ENVILIG position(147:149) ZONED EXTERNAL,
    EPEGANN position(150:153) CHAR,
    EPEGCOD position(154:158) CHAR,
    EPEGNUM position(159:168) CHAR,
    EPDGLIG position(169:171) CHAR,
    TVAGCOD position(172:173) CHAR,
    CNDGMONTTC position(174:187) DECIMAL EXTERNAL "to_number(substr(:CNDGMONTTC,1,12))||','||to_number(substr(:CNDGMONTTC,13,2))",
    CNDGMONTVA position(188:201) DECIMAL EXTERNAL "to_number(substr(:CNDGMONTVA,1,12))||','||to_number(substr(:CNDGMONTVA,13,2))",
    CNDGMONHT position(202:215) DECIMAL EXTERNAL "to_number(substr(:CNDGMONHT,1,12))||','||to_number(substr(:CNDGMONHT,13,2))",
    CNDGOBJ position(216:240) CHAR,
    CNDGREF1 position(241:265) CHAR,
    CNDGREF2 position(266:290) CHAR
    )

    Quelqu'un a t'il une idée pour procéder car ma requête ne ramène rien du tout alors qu'il y a des données dans la table et que la requete fonctionne en dehors de ce contexte.

    Merci

    nicolas

  2. #2
    Membre éclairé Avatar de Z3phur
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2007
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2007
    Messages : 680
    Points : 807
    Points
    807
    Par défaut
    tu peux montrer un extrait de ton fichier plat une ligne suffit.

    Edit : j'ai du mal à comprendre, tu arrives à charger ton fichier ou pas?

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut suite chargement
    Merci d'avoir répondu rapidement,

    voici un extrait du fichier :
    D68200900DDRH00000002000001GE1351N000000101IP20080101M1 1 1 0000009999135 2009B112 2009B112 0000000001001 000000000020200000000000000000000000002020REFER OBJE1 OBJE2

    en fait la requête avec le select n'est pas tout a fait bonne, voilà la correcte (normalement) :
    INTGNUM position(014:021) ZONED EXTERNAL "(select nvl(max(INTGNUM),0) from INTG) + :INTGNUM",

    ce que je veux faire c'est récupérer la valeur dans le fichier (cela ça marche), et lui incrémenter la valeur max présente déjà dans la table. si j'ai 10 lignes dans ma table le champ INTGNUM allant de 1 à 10, malgré que le fichier la zone correspondant à ce champ ait 1, il faut qu'après chargement, la nouvelle ligne créée ait 11.

    Nicolas

  4. #4
    Membre éclairé Avatar de Z3phur
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2007
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2007
    Messages : 680
    Points : 807
    Points
    807
    Par défaut
    Ton champ dans INTGNUM dans ta table peut être une sequence car si oui tu pourras donc faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INTGNUM position(014:021) DECIMAL EXTERNAL "tasequence.nextval + :INTGNUM"

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut suite chargement
    cela veut ainsi que la séquence peut prendre la valeur max contenu dans la table, à savoir également que cette table peut être purgée donc le max dminiuerai

    nicolas

  6. #6
    Membre éclairé Avatar de Z3phur
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2007
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2007
    Messages : 680
    Points : 807
    Points
    807
    Par défaut
    Excuse moi ta valeur INTGNUM de ton fichier sera-t-elle toujours 1?

    si oui tu peux donc faire :

    une séquence et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INTGNUM position(014:021) DECIMAL EXTERNAL "tasequence.nextval"
    Et si tu purge ta table tu réinitialise ta séquence.

Discussions similaires

  1. Chargement de données sous Oracle avec sql loader
    Par yayamo dans le forum SQL*Loader
    Réponses: 4
    Dernier message: 07/08/2008, 15h40
  2. Requete SQL pour intersection entre 2 autres requete SQL
    Par p'tite Sandrine dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 06/09/2007, 12h18
  3. [SQL] Afficher les données d'une requete SQL
    Par griese dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 22/06/2006, 11h22
  4. SQL LOADER Fic données
    Par opaladu dans le forum SQL*Loader
    Réponses: 1
    Dernier message: 13/10/2005, 17h12
  5. Exporter des données d'un requete SQL vers excel (csv)
    Par PrinceMaster77 dans le forum ASP
    Réponses: 9
    Dernier message: 08/10/2005, 22h28

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