|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2006 Messages : 32 ![]() |
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 |
|
|
00
|
|
|
#2 |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2006 Messages : 32 ![]() |
Je remonte mon sujet. Je ne comprends pas pourquoi je ne peux pas mettre une date à null
|
|
|
00
|
|
|
#3 |
![]() ![]() Consultant en Business Intelligence Inscription : janvier 2007 Messages : 1 192 ![]() |
Bonjour,
tu peux peut être t'en sortir avec un NVL ou un decode |
|
|
00
|
|
|
#4 |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2006 Messages : 32 ![]() |
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. |
|
|
00
|
|
|
#5 |
![]() ![]() Consultant en Business Intelligence Inscription : janvier 2007 Messages : 1 192 ![]() |
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 :
SELECT to_date(DECODE('NULL','NULL',''),'DDMMYYYY') FROM dual |
|
|
00
|
|
|
#6 |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2006 Messages : 32 ![]() |
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. |
|
|
00
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2006 Messages : 32 ![]() |
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 ?
|
|
|
00
|
|
|
#8 |
|
Membre émérite
![]() Inscription : janvier 2004 Messages : 845 ![]() |
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 |
|
|
00
|
|
|
#9 |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2006 Messages : 32 ![]() |
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')); |
|
|
00
|
|
|
#10 | |
|
Membre émérite
![]() Inscription : janvier 2004 Messages : 845 ![]() |
Citation:
le but est bien d'avoir Code :
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 |
|
|
|
00
|
|
|
#11 |
![]() ![]() Consultant en Business Intelligence Inscription : janvier 2007 Messages : 1 192 ![]() |
Et en mettant un blanc dans la colonne excel qui pose problème, ça donne quoi ?
|
|
|
00
|
|
|
#12 |
|
Membre émérite
![]() Inscription : janvier 2004 Messages : 845 ![]() |
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 |
|
|
00
|
|
|
#13 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
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 |
|
|
00
|
|
|
#14 | |||||||
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2006 Messages : 32 ![]() |
De base, la générateur de code de sql developper génère ça :
Code :
Code :
Code :
Citation:
|
|||||||
|
|
00
|
|
|
#15 |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2006 Messages : 32 ![]() |
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
|
|
|
00
|
|
|
#16 |
|
Invité régulier
![]() Inscription : avril 2008 Messages : 24 ![]() |
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! |
|
|
00
|
|
|
#17 |
|
Expert Confirmé
![]() dba Inscription : juillet 2007 Messages : 2 523 ![]() |
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. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com