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 :

[SQL*Loader] Fusionner 2 colonnes dates


Sujet :

Oracle

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 44
    Points : 32
    Points
    32
    Par défaut [SQL*Loader] Fusionner 2 colonnes dates
    Bonjour,

    J'utilise SqlLoader pour charger une table oracle a partir d'un fichier CSV. Mon fichier se présente comme ça :

    XXX;021111;231106;
    XXX;050310;021759;
    XXX;040420;230110;
    XXX;011025;011700;

    Les deux derniers champs représente une date (YYMMJJ) puis une heure (HHMISS).

    Voila comment je procéde pour l'instant pour faire le load:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    load data infile 'monFichier.csv' badfile 'monFichier.bad'
    append
    into table maTable
    fields terminated by ";"
    (col1 ,
     col2 "to_date(:col1, 'YYMMDD')",
     col3)
    J'aimerai grouper les deux derniéres colonnes en une seule dans ma base oracle, de façon a n'avoir qu'un seul champ DATE (pour l'instant, l'heure est stockée dans un champ CHAR(6)). Est ce que quelqu'un sait comment il faut faire

    Merci d'avance

  2. #2
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    Je ne peux pas tester mais sans doute ca marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    load data infile 'monFichier.csv' badfile 'monFichier.bad' 
    append 
    into table maTable 
    fields terminated by ";" 
    (col1 , 
     col2 expr "to_date(:col2 || ' ' || :col3, 'YYMMDD HH24MISS')", 
     col3 filler)

    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    Je n'arrive pas à faire fonctionner ceci mais qu'est ce que représente "expr" et "filler" dans les lignes suivantes? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    col2 expr "to_date(:col2 || ' ' || :col3, 'YYMMDD HH24MISS')", 
    col3 filler)

  4. #4
    Rédacteur

    Inscrit en
    Septembre 2004
    Messages
    626
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 626
    Points : 848
    Points
    848
    Par défaut
    expr oublie, j'ai psychoté.

    filler c'est pour dire qu'on ne charge pas cette colonne.

    Mais ca marche, j'ai ce msg d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Record 1: Rejected - Error on table TEST.
    ORA-01008: Toutes les variables ne sont pas liées
    Pourtant j'étais persuadé qu'on pouvait le faire.

    En fait si dans ta table tu as vraiment une colonne col3 et que tu enlèves filler ca marche.


    Sinon si tu es sous 9i tu peux créer une table externe et une vue basé sur cette table qui fera le to_date.


    Laly.
    In the heart of the truly greats, perfection is never achieved but endlessly pursued.

    Mon article sur les fonctions analytiques d'Oracle (calcul de moyennes mobiles, de quartiles et bien d'autres...)

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    Pour info pour ceux que ça interesse, j'ai réussi a résoudre mon problème, de façon peut élégante mais ça marche (uniquement parce que j'ai la chance d'avoir des largeurs de champs fixes).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    load data infile 'monFichier.csv' badfile 'monFichier.bad' 
    append 
    into table maTable 
    fields
    (col1 position (1:3), 
     col2 position (5:17) "to_date(substr(:col2, 1 , 6) || substr(:col2, 8, 6), 'YYMMDDHH24MISS')")
    Merci pour ton aide lalystar

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

Discussions similaires

  1. Requête SQL pour fusionner des colonnes
    Par Aenur56 dans le forum Langage SQL
    Réponses: 9
    Dernier message: 20/05/2010, 19h23
  2. [SQL Loader] Ignorer certaines colonnes
    Par romaintaz dans le forum SQL
    Réponses: 1
    Dernier message: 02/06/2009, 17h06
  3. Réponses: 2
    Dernier message: 26/12/2007, 10h00
  4. Sql loader Help ? Conversion de date
    Par okilele dans le forum SQL*Loader
    Réponses: 2
    Dernier message: 01/05/2007, 09h13

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