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 9.2 : Importation et champ date NULL


Sujet :

Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 32
    Points : 20
    Points
    20
    Par défaut Oracle 9.2 : Importation et champ date NULL
    Bonjour !

    J'ai un petit soucis avec ma base oracle. Je possède une table avec un champ "COL_DATE_SORTIE" de type "DATE" ayant la propriété "NULLABLE" à yes.
    Pour manager ma base j'utilise l'application Oracle SQL Developer.

    Mon soucis est le suivant : je dois importer des champs à partir d'un fichier excel. Parfois, ce champ est remplis, parfois non, ce qui fait que quand je tente d'importer, je me retrouve un TO_DATE('NULL','') et évidemment il n'apprécie pas trop qu'on lui laisse le choix dans la date.

    Voici une capture d'écran un peu plus parlante.



    Il y a-t-il un moyen de contourner cela ?

    Merci d'avance

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 32
    Points : 20
    Points
    20
    Par défaut
    Je remonte mon sujet. Je ne comprends pas pourquoi je ne peux pas mettre une date à null

  3. #3
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Points : 2 998
    Points
    2 998
    Par défaut
    Bonjour,

    tu peux peut être t'en sortir avec un NVL ou un decode
    It isn't that they can't see the solution, it's that they can't see the problem.
    Mes Articles et Traductions (Microstrategy, Css et Javascript)
    Si vous souhaitez contribuer à la rubrique BI, contactez-moi ou tout autre membre de l'équipe BI par MP.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 32
    Points : 20
    Points
    20
    Par défaut
    Salut !

    Je ne vois pas trop comment c'est possible de mettre en place un NVL dans le cadre d'une importation via un fichier excel.

  5. #5
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Points : 2 998
    Points
    2 998
    Par défaut
    Perso, je n'ai jamais fait d'import direct, comme ça,
    cela dit, je pense que tu peux mettre un masque pour tes données, non ?

    le to_date('','') que tu parles, tu l'indique bien quelque part, non ?

    je complète :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select to_date(DECODE('NULL','NULL',''),'DDMMYYYY') from dual
    ce genre de requete passe, donc je pense que tu peux peut être essayer ça
    It isn't that they can't see the solution, it's that they can't see the problem.
    Mes Articles et Traductions (Microstrategy, Css et Javascript)
    Si vous souhaitez contribuer à la rubrique BI, contactez-moi ou tout autre membre de l'équipe BI par MP.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 32
    Points : 20
    Points
    20
    Par défaut
    Ce code est généré automatiquement par oracle. C'est le seul moyen que j'ai d'importer ces données. Je me vois mal tapper le nom des 2000 collaborateurs à la main. Je peux indiquer le format de la date sous la forme DD/MM/AAAA, ce qui donne quelque chose du genre to_date('NULL','DD/MM/AAAA') si le champ date est vide dans ma feuille excel. Et ça evidemment il n'en veut pas.

    edit : je vais essayer de modifier le code, mais ça me parait impossible.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 32
    Points : 20
    Points
    20
    Par défaut
    Je confirme qu'il n'est pas possible de modifier le code SQL généré automatiquement par oracle. N'y aurait-il pas moyen de faire quelque chose par le biais d'un trigger ?

  8. #8
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    Salut,
    et si tu traites le problème à la source, c'est à dire dans Excel...

    avec une fonction Excel sur la colonne en question, tu remplace toute cellule vide par NULL (sans simple quote, sans guillemets, sans rien...) est-ce que Oracle ne vas pas alors identifier correctement la valeur NULL ?
    Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

    Yorglaa

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 32
    Points : 20
    Points
    20
    Par défaut
    Même problême. En fait, si il n'y a rien dans la cellule, il mets NULL, et si je mets NULL dans la cellule il prends ça pour un champ de caractère et prends la valeur texte NULL.

    insert into COLLABORATEUR (COL_ID,COL_DATE_SORTIE) VALUES(1,TO_DATE('NULL','DD/MM/YYYY'));

  10. #10
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    Citation Envoyé par mimil77210
    Même problême. En fait, si il n'y a rien dans la cellule, il mets NULL, et si je mets NULL dans la cellule il prends ça pour un champ de caractère et prends la valeur texte NULL.

    insert into COLLABORATEUR (COL_ID,COL_DATE_SORTIE) VALUES(1,TO_DATE('NULL','DD/MM/YYYY'));
    euuuuh mais dans ce cas je ne comprends pas... tu dis que si il n'y a rien, il met NULL... c'est bien ce qu'on veut non ?

    le but est bien d'avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into COLLABORATEUR (COL_ID,COL_DATE_SORTIE) VALUES(1,NULL);
    Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

    Yorglaa

  11. #11
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Points : 2 998
    Points
    2 998
    Par défaut
    Et en mettant un blanc dans la colonne excel qui pose problème, ça donne quoi ?
    It isn't that they can't see the solution, it's that they can't see the problem.
    Mes Articles et Traductions (Microstrategy, Css et Javascript)
    Si vous souhaitez contribuer à la rubrique BI, contactez-moi ou tout autre membre de l'équipe BI par MP.

  12. #12
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    une autre solution (moins propre) consisterait à remplacer les cellules vides (celles que tu veux à NULL) par une date bidon facilement identifiable, genre 01.01.1800, puis tu fais un update par-dessus pour mettre à NULL partout où la date = 01.01.1800
    Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

    Yorglaa

  13. #13
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Sous Toad, l'import excel d'une colonne date nulle marche bien.
    Ce serait un bug sql dev.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 32
    Points : 20
    Points
    20
    Par défaut
    De base, la générateur de code de sql developper génère ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    insert into COLLABORATEUR (COL_ID,COL_DATE_SORTIE) VALUES(,TO_DATE('','DD/MM/YYYY'));
    Qu'il va complêter en allant rechercher les valeurs dans le fichier excel. Avec une date normale, tout va bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    insert into COLLABORATEUR (COL_ID,COL_DATE_SORTIE) VALUES(1,TO_DATE('01/02/2006','DD/MM/YYYY'));
    Cependant, si il n'y a rien dans la case correspondant à la date ( autrement dis, la valeur NULL), il génère ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    insert into COLLABORATEUR (COL_ID,COL_DATE_SORTIE) VALUES(1,TO_DATE('NULL','DD/MM/YYYY'));
    D'où le problême.

    une autre solution (moins propre) consisterait à remplacer les cellules vides (celles que tu veux à NULL) par une date bidon facilement identifiable, genre 01.01.1800, puis tu fais un update par-dessus pour mettre à NULL partout où la date = 01.01.1800
    C'est une très bonne idée. Les methodes "sales" me conviennent aussi

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 32
    Points : 20
    Points
    20
    Par défaut
    Ce programme est décidément complètement débile. Petit exemple : dans la cellule il y a marqué 01/12/2007, lui il récupère 12/01/07. Géniale ... Mais attendez le plus fort ! Si jamais il y a marqué 01/01/1800, cette fois il récupère 01/01/1800. Du coup je vais tenter avec 01/01/99 :p

  16. #16
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Avril 2008
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    c'est une histoire de format de date

    en angleterre c'est mm/jj/aaaa alors qu'en france c'est jj/mm/aaaa
    C'est pour sa qu'il récupère pas comme tu veux!

  17. #17
    Invité
    Invité(e)
    Par défaut
    merci de m'avoir fait découvrir cette option d'import sur Oracle SQL Developer...

    Manque de pot, il ne reconnait pas le japonais...

    Pourtant mon poste me semble configuré correctement puisque j'y arrive par une autre méthode en passant par access.

    Tant pis.

Discussions similaires

  1. Import Export Wizard date NULL
    Par olibara dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 22/02/2012, 21h57
  2. Remise d'un champ Date à NULL
    Par PatStan17 dans le forum C#
    Réponses: 4
    Dernier message: 02/12/2010, 16h11
  3. champ date null
    Par viny dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 07/08/2007, 21h18
  4. Problème champ Date Null
    Par cisco7 dans le forum Oracle
    Réponses: 5
    Dernier message: 24/09/2006, 13h58
  5. [Delphi & DBExpress ] Mettre un champs date à null
    Par falcon dans le forum Bases de données
    Réponses: 10
    Dernier message: 03/11/2004, 08h21

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