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

Oracle Discussion :

Oracle 8i et sql*loader


Sujet :

Oracle

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Oracle 8i et sql*loader
    Bonjour,

    j'ai un fichier (extraction d'excel) dont le séparateur est le ;
    Par contre la troisième colonne peut être sur plusieurs lignes.

    Je n'arrive pas à charger les données. Je ne sais pas si le problèmes vient du fichier, de la définition fichier de controle ou de la table.

    Voici le fichier (3 lignes à charger) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    AA;"Top"; 
    BB;"acte ";" premier acte chargement. 
    Deuxième acte faire un traitement. Ensuite il suffit de transmettre les données.Le reste se passera quand cela devra se passer mais bon cela a 
    rrive" 
    CC;"flag";"valeur"
    Voici le fichier de controle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    LOAD DATA INFILE 'TEST_RUBR.txt' 
    APPEND INTO TABLE TEST_RUBR 
    fields terminated by ';' 
    optionally enclosed by '"' 
    TRAILING NULLCOLS 
    ( 
      CD_RUBR , 
      LB_COUR_RUBR, 
      TT_REGL_GEST 
    )

    Voici le script de création de la table cible

    Code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE TABLE TEST_RUBR ( 
      CD_RUBR       VARCHAR2 (16), 
      LB_COUR_RUBR  VARCHAR2 (64), 
      TT_REGL_GEST  VARCHAR2 (3000))
    merci d'avance

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    Bonjour ,

    Nous ne pouvons rien pour vous si vous ne nous fournissez pas le code de l'erreur

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Bonjour,

    les messages d'erreurs sont simples, Oracle essaye de traîter 4 lignes au lieu de trois mais une colonne avec retour chariot, il génère les erreurs suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Record 2: Rejected - Error on table TEST_RUBR, column TT_REGL_GEST.
    second enclosure string not present
    Record 3: Rejected - Error on table TEST_RUBR.
    ORA-01401: inserted value too large for column

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    Il vous suffit de retirer le retour chariot et de vous atteller à cette erreur
    ORA-01401: inserted value too large for column

  5. #5
    Candidat au Club
    Inscrit en
    Juillet 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    merci pour la réponse mais ma problématique est plus complexe, je dois charger dans la 3e colonne (un varchar de 3000)
    les données en un seul bloc donc prendre en compte les retours chariots

    Par exemple, le texte suivant dois être chargé dans la colonne TT_REGL_GEST
    " premier acte chargement.
    Deuxième acte faire un traitement. Ensuite il suffit de transmettre les données.Le reste se passera quand cela devra se passer mais bon cela a
    rrive"

    Je ne suis pas sur d'être clair pour expliquer ma problématique ?

  6. #6
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    hum, je ne suis pas sûr que SQL*Loader soit capable de charger des fichiers avec des lignes comportant des retours chariot, sans retravailler au préalable le fichier.
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  7. #7
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Citation Envoyé par plaineR
    hum, je ne suis pas sûr que SQL*Loader soit capable de charger des fichiers avec des lignes comportant des retours chariot, sans retravailler au préalable le fichier.
    +1

    Un retour chariot => nouvelle ligne => nouvel enregistrement.
    Par contre, il faut "bidouiller" le fichier en entrée pour remplacer les Chr(13) par des <BR> par exemple, mais de toute façon, 3000 caractères sur une seule ligne, je ne pense pas que cela passe !

  8. #8
    Candidat au Club
    Inscrit en
    Juillet 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Effectivement c'est une bidouille qui marche mais c'est de la bidouille !
    Faire un travail sur le fichier, le charger puis ensuite sous Oracle faire un Replace c'est moyen dans un contexte professionnel.

    Ce qui me laisse un espoir d'une autre solution c'est que sous TOAD il est possible de faire un copier/coller dans le varchar avec des sauts de lignes.

    ps : je n'envisage pas de proposer de faire des copier/coller et cela me dérange de livrer un shell "bidouille" de chargement

  9. #9
    Membre expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Points : 3 609
    Points
    3 609
    Par défaut
    Toad n'est pas SQL*Loader. Avec une Porshe je roule à 250km/h, mais pas avec une 2CV Et puis on n'a pas dit qu'il était impossible d'insérer des valeurs comportant des sauts de lignes. On t'a juste dit que cela était impossible avec SQL*Loader.

    Si tu ne veux pas faire de la "bidouille", tu peux passer par script PL utilisant UTL_FILE pour lire ton fichier, les fonctions instr et substr pour gérer le découpage de ton fichier et tu fais tes insertions ensuite.
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  10. #10
    Membre expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Points : 3 199
    Points
    3 199
    Par défaut
    Toad permet de faire des copier/coller car il est possible de stocker des retours chariots, évidemement, mais il n'est pas possible à partir d'un fichier PLAT de charger directement aevc SQL*Loader des retours chariots !

    Vous ne pouvez pas comparer tel quel un mode interactif (Toad) avec un mode shell "batch" (SQL*Loader).

Discussions similaires

  1. [Oracle 9i] SQL*Loader et chargement de données
    Par gogolak dans le forum Oracle
    Réponses: 7
    Dernier message: 25/07/2007, 13h19
  2. [Oracle 10] Appel SQL*Loader depuis Java
    Par ftrifiro dans le forum Oracle
    Réponses: 4
    Dernier message: 23/01/2007, 10h34
  3. Réponses: 5
    Dernier message: 17/10/2006, 18h27
  4. [ORACLE 8.1.7] Message 2100 not found avec SQL LOADER
    Par ApprentiOracle dans le forum SQL*Loader
    Réponses: 3
    Dernier message: 09/08/2006, 20h03
  5. [SQL LOADER - Oracle 9i] Mode verbose du fichier LOG ?
    Par ludmillaj dans le forum SQL*Loader
    Réponses: 3
    Dernier message: 31/01/2006, 01h34

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