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: Problème de date


Sujet :

SQL*Loader Oracle

  1. #21
    Membre habitué
    j'ai mis l'option:
    FIELDS DELIMITED BY ',' OPTIONALLY '"'
    mais j'ai une erreur:
    FIELDS: command not found
    TRUNCATE: command not found
    syntax error near unexpected token `('
    (CARD POSITION(1:11),

    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
     
    echo "LOAD DATA
    INFILE '$rep/fichier.TXT'
    STREAM 
    BADFILE       '$LOGS/fichier.BAD'  
    DISCARDFILE   '$LOGS/fichier.DISCARD'" 
    FIELDS DELIMITED BY ',' OPTIONALLY '"'
    TRUNCATE INTO TABLE Nom_table
    (Val1 POSITION(1:11),
     Val2  POSITION(22:56),
     DATE_SAISIE POSITION(13:20) DATE "yyyymmdd",
     val3           POSITION(58:62),
     Val4 POSITION(75:82),
     val5 POSITION(84:91),
     val6     INTEGER EXTERNAL "246" ,
     Val7 CHAR ":val6||'/'||:val3||'/'||:val1||'.TIF'") " >>fichier.ctl


    Je ne sais pas d'où vient l'erreur.

  2. #22
    Membre expert
    Citation Envoyé par PpPool
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
     
    FIELDS TERMINATED BY ";" OPTIONALLY ENCLOSED BY '"'
    TRAILING NULLCOLS
    Mais tu ne peux pas cumuler les positions et ces options.
    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.

  3. #23
    Membre habitué
    ok d'accord donc je suis obligée de faire un fichier à part pour que mes guillemets soient pris en compte...

  4. #24
    Membre régulier
    Bonjour,

    Je déterre (littéralement, vu l'ancienneté de la discussion...) ce sujet pour un problème portant sur le même sujet: le chargement de dates dans une base.

    J'arrive bien à charger mon fichier avec des paramètres date de ce type:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    DT_MVT "to_date(<img src="images/smilies/icon_biggrin.gif" border="0" alt="" title=":D" class="inlineimg" />T_MVT,'yyyymmdd')",
    apparaît dans la table sous cet aspect: 01/02/2017 (normal)

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    AN_NAISS "to_date(:AN_NAISS,'yyyy')"
    apparaît dans la table sous cet aspect: 01/03/1954 (problématique car le jour et le mois sont ajoutés automatiquement par oracle)

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    DT_CG "to_date(<img src="images/smilies/icon_biggrin.gif" border="0" alt="" title=":D" class="inlineimg" />T_CG,'yyyymmdd')"
    apparaît dans la table sous cet aspect: 23/09/1988 (normal)

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    ANMO_MEC "to_date(:ANMO_MEC,'yyyymm')"
    apparaît dans la table sous cet aspect: 01/09/1988 (il ne devrait apparaître que l'année et le mois)

    Comment serait-il possible que, lors du chargement, les formats to_date soient respectés et non pas systématiquement transformés en dd/mm/yyyy ?

    En fouinant sur internet, j'ai trouvé la variable NLS_DATE_FORMAT mais je ne sais pas (en tout cas, cela n'a pas fonctionné) si je peux l'inclure dans mon .ctl afin que le format date reste tel qu'il est dans le fichier de chargement ?

    Merci.
    Microsoft SQL Server Management Studio v17.9.1

  5. #25
    Expert confirmé
    Une date est un type de donnée qui comporte le jour, mois, année, et sur Oracle, la composante horaire jusqu'à la seconde également.

    Si vous souhaitez stocker une année (qui n'est donc pas une date) vous pouvez le faire en stockant l'information dans un number(4).
    Pour le mois année, vous pouvez le faire dans 2 colonnes.

    Si vous conservez le type date, vous pouvez aussi fixer lors du chargement les composantes manquantes, par exemple considérer que pour stocker l'année vous le faites au 1er janvier.

    Bref tout dépend de vos objectifs et de vos possibilités à modifier le modèle, mais une année ne sera jamais une date.

  6. #26
    Membre régulier
    Ce serait donc pour cette raison que lors, du chargement de l'année (ex: 1984 dans le fichier source), Oracle ajoute 01/03/1984 ?
    C'est parce que j'ai fait le chargement au mois de mars et qu'il ajoute par défaut le 1er jour du mois ?
    Microsoft SQL Server Management Studio v17.9.1

###raw>template_hook.ano_emploi###