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 :

charger une date par défaut avec sql Loader


Sujet :

SQL*Loader Oracle

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 9
    Points : 2
    Points
    2
    Par défaut charger une date par défaut avec sql Loader
    Bonjour,

    Voici mon problème:
    Je désirerai charger un table qui possède un champ date avec sql Loader.
    Si ce champ date est null j'aimerai insérer dans ce champ, une valeur par défaut (exemple : '01.01.0001' ou '01/01/0001' );

    Avez vous des proposition à me faire parce que je sèche vraiment là dessus

    Merci d'avance pour vos solutions.

  2. #2
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    Pourquoi ne pas le faire directement dans l'architecture ?

  3. #3
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Exemple:

    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
    17
    18
    19
    SQL> create table t(x int, d date);
     
    Table created.
     
    SQL> alter table t modify (d default to_date('01.01.0001','DD.MM.YYYY'));
     
    Table altered.
     
    SQL> insert into t(x) values(0);
     
    1 row created.
     
    SQL> select * from t;
     
             X D
    ---------- ---------
             0 01-JAN-01
     
    SQL>

  4. #4
    Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    merci pour vos réponse.
    Cependant, il y a une contrainte not null pour ce champ.
    Donc cela peut poser quelques problème lors du chargement de la table?
    est-ce vraiment la meilleure solution?

  5. #5
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    C'est complémentaire il me semble. Si tu inséres null et qu'il y a une valeur par défaut, la contrainte not null ne sera jamais violée.

  6. #6
    Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    re-bonjour,

    j'ai enlevé la contrainte not null.
    cependant la commande
    ALTER TABLE T MODIFY (d DEFAULT to_date('01/01/2001','DD/MM/YYYY'));

    n'insere pas la date par défaut lorsque l'on charge la table par sql loader.
    sql Loader:

    d DATE "RRRR.MM.DD" NULLIF d= BLANKS

    et donc il m'insère un blanks et non la valeur par défaut.

    pourriez vous m'éclairer?
    merci

  7. #7
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    d DATE "RRRR.MM.DD" NULLIF d= BLANKS
    insère valeur nulle SQL si le champ d est composé de blancs.

    Vous pouvez essayer après la phase de chargement avec Oracle 9i:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     update t set d = default where d is null;

  8. #8
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    J'ai pas bien compris pourquoi avoir viré la contrainte not null... C'était exactement ce dont tu avais besoin...

  9. #9
    Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    non je n'en ai pas vraiment besoin.
    en faite pourrai-t-on insérer la valeur par défaut dans le ctl?
    la méthode update me parait assez lourde si il y a bcp d'enregistrements...

  10. #10
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    La clause DEFAULTIF ne semble pas concerner les colonnes de type DATE.
    Dans votre cas, il faut sans doute passer par un trigger sur INSERT.

  11. #11
    Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 9
    Points : 2
    Points
    2
    Par défaut bien vu!
    bien vu, ce qui m'amène à une autre question...
    est ce qu'on peut faire un trigger modifiant plusieurs date contenus dans différentes tables d'un schéma?

    merci

  12. #12
    Membre émérite Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Points : 2 370
    Points
    2 370
    Par défaut
    oui. Après il faut faire attention à l'enchaînement des modifications.

  13. #13
    Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    merci pour vos nombreuses réponses,

    pour le moment j'ai créer mon trigger mais cependant, lors du chargement avec sql loader, celui ci désactive tous les triggers. ce qui est un peu gênant dans mon cas...
    Vous ne trouvez pas?
    Y'a-t-il un moyen pour justement pouvoir executer le trigger pendant le load?

    merci d'avance!

  14. #14
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    C'est probablement parce que vous faites du chargement direct (DIRECT=true) ?
    Si vous voulez garder cette option et ne pas utilisez un UPDATE après le chargement, il faut sans doute mettre la valeur par défaut dans le fichier à charger.

  15. #15
    Candidat au Club
    Inscrit en
    Octobre 2004
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par pifor
    C'est probablement parce que vous faites du chargement direct (DIRECT=true) ?
    Si vous voulez garder cette option et ne pas utilisez un UPDATE après le chargement, il faut sans doute mettre la valeur par défaut dans le fichier à charger.
    Merci,
    comment est-ce que je pourrai mettre cette valeur par défaut dans le fichier?
    je pensai plutot la mettre dans le .ctl, qu'en pensez vous?
    cependant j'ai essayé comme ceci mais ca n'a pas l'air de fonctionner. et les codes que je trouve sur internet ne fonctionne pas du tout!

  16. #16
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Moi j'utiliserais des outils Unix comme sed, awk pour faire cette modification directement dans les données.

Discussions similaires

  1. UI Datepicker, proposer une date par défaut
    Par krislec dans le forum jQuery
    Réponses: 8
    Dernier message: 26/07/2011, 11h00
  2. Avoir une date par défaut - datepicker()
    Par n3x1n² dans le forum jQuery
    Réponses: 1
    Dernier message: 24/05/2011, 11h35
  3. Réponses: 3
    Dernier message: 08/02/2010, 09h16
  4. Charger une page par défaut
    Par JoseF dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 14/08/2007, 20h44
  5. Peut-on faire une totalisation par colonne avec SQL ?
    Par lodan dans le forum Langage SQL
    Réponses: 19
    Dernier message: 02/03/2007, 16h44

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