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 :

Définir une taille fixe pour une date


Sujet :

SQL*Loader Oracle

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2004
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 55
    Points : 28
    Points
    28
    Par défaut Définir une taille fixe pour une date
    Bonjour,

    J'ai un petit souci avec sql loader et le fichier de contrôle, au niveau des dates et de leurs masques.

    Bizarrement, la question me semble très basique mais je n'ai rien trouvé de concluant :

    Comment forcer une taille pour une date, c'est à dire "l'obliger" à avoir un nombre de caractères définis, pas plus, pas moins (et sans utiliser POSITION) ?

    Pour exemple (venant de mon fichier de contrôle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DATE_FIN DATE "dd/mm/yyyy" "RTRIM(:DATE_FIN)"
    Or avec ce code, si je saisi une date comme 6/12/06, cela est accepté (ce qui me pose des soucis dans la suite de mon traitement, sinon ce n'est pas drôle).

    En résumé, je voudrais tout simplement ne pas pouvoir saisir autre chose que des dates de 10 caractères (/ compris du coup).

    Voilà, beaucoup de texte pour une petite question...

    Si quelqu'un à une idée, je suis preneur (idem si j'ai raté une info lors de mes recherches, et dans ce cas pardon d'avance).

    Merci bien.

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    le type DATE contient obligatoirement l'heure

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2004
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    Je ne vois pas trop en quoi cela joue. Pourrais-tu m'éclairer là dessus stp ?

    Mes données viennent d'un fichier csv, et en l'état actuel, cela fonctionne "correctement".

    Au pire, je peux essayer de passer par du VARCHAR, mais il faut absolument que le nombre de caractères saisi soit toujours 10 (pour correspondre au masque).

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    au temps pour moi, j'avais pas compris la question

    Si le format n'est pas DD/MM/YYYY et que tu veux le mettre dans une champs DATE, la ligne sera rejetée de toute façon non ?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2004
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    Désolé, j'ai du mal exposer mon problème.

    Justement, mon souci est que je veux obligatoirement un format DD/MM/YYYY, or quelque chose comme D/MM/YY (ex : 6/12/06 au lieu de 06/12/2006) est accepté par sql loader.

    Il me semble avoir vu dans la doc oracle, que sur des dates avec mask, le contrôle effectué sur la longueur est uniquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    date_a_controler.length <= mask.length
    or il me faudrait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    date_a_controler.length == mask.length
    et toujours sans utiliser POSITION.

  6. #6
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    je ne comprends pas bien le besoin là... si le format date est accepté pourquoi tu te fais des noeuds ? Sinon, la solution c'est en effet une colonne VARCHAR2 avec une contrainte... mais ça me parait lourd et bien inutile puisque dans la base 6/12/06 ou 06/12/06 c'est pareil

  7. #7
    Nouveau membre du Club
    Inscrit en
    Février 2004
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    Effectivement c'est un peu se compliquer pour rien, mais je suis obligé de faire ce contrôle.

    C'est uniquement du contrôle de format. Une date doit être saisie DD/MM/YYYY (donc 10 caractères) dans le fichier csv et pas autrement.

    Après, ce qui est inséré en base importe peu. La demande est "juste" que sql loader ne prenne pas en compte les enregistrements comportant une date qui ne respecte pas exactement le masque.

    Une autre question justement : Comment sql détermine le siècle, si dans mon csv je saisi 06/12/06 ???

  8. #8
    Nouveau membre du Club
    Inscrit en
    Février 2004
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 55
    Points : 28
    Points
    28
    Par défaut
    C'est bon j'ai trouvé.

    Pour que sql loader prenne en compte le format exact, il suffit de faire précéder le masque par FX.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DATE_FIN "TO_DATE(:DATE_FIN,'FXdd/mm/yyyy')"
    Merci.

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

Discussions similaires

  1. Comment initialiser une taille fixe a une JFrame
    Par Theinfrarougegp dans le forum Débuter
    Réponses: 2
    Dernier message: 22/11/2014, 19h47
  2. Définir une taille fixe pour mes boutons dans un GridLayout
    Par Morby dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 04/01/2012, 03h30
  3. [Google Maps] Définir une taille spécifique pour l'infowindow
    Par xillibit dans le forum APIs Google
    Réponses: 3
    Dernier message: 30/09/2011, 18h29
  4. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24
  5. Taille minimum pour une JFrame ou une JInternalFrame
    Par sixkiller dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 30/11/2004, 15h26

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