Aide sur les datetime d'Oracle pour une modotte à forte poitrine

Aide sur les datetime d'Oracle pour une modotte à forte poitrine - SQL/NoSQL - Programmation

Marsh Posté le 10-12-2004 à 15:34:19    

j'ai un souci avec ce $£§!%* d'Oracle : j'importe dans une table des données en provenance d'un autre SGBF, qui gère les datetime à la milliseconde près. Ce champ étant un champ critique, je souhaite lui coller un index et j'obtiens un merveilleux "ORA-01452: cannot CREATE UNIQUE INDEX; duplicate keys found"
diantre me dis-je ! des clés dupliquées ! et là, je me souviens que les datetime d'Oracle vont jusqu'à la seconde, me voila dans la merde !
 
qwechtieunne :  
- comment pourrais-je simuler un datetime à la milliseconde ?
- comment indexer ce truc ?

Reply

Marsh Posté le 10-12-2004 à 15:34:19   

Reply

Marsh Posté le 10-12-2004 à 15:47:01    

au pire, tu peux créer un champ supplémentaire pour y mettre les millisecondes qui débordent et utiliser le doublet comme clé, non? :??:


Message édité par skeye le 10-12-2004 à 15:47:28

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 10-12-2004 à 15:49:20    

Bon j'ai pas oracle sous la main mais
si tu transformes ton datetime_millisecondes  
en chaine de caractères, tu peux sans doute importer
la première partie datetime_secondes dans un
nouveau champ et la partie restante millisecondes dans un
autre champ ... puis créer un index unique sur  
ces 2 champs, non ?

Reply

Marsh Posté le 10-12-2004 à 15:49:49    

Grillaid !

Reply

Marsh Posté le 10-12-2004 à 15:56:27    

Question subsidiaire: t'as vraiment besoin que l'index soit unique?
 
PS: et le coup de la fille, on me l'a déjà fait, ca marche pas avec moi :o

Reply

Marsh Posté le 10-12-2004 à 16:32:27    

skeye a écrit :

au pire, tu peux créer un champ supplémentaire pour y mettre les millisecondes qui débordent et utiliser le doublet comme clé, non? :??:


 

vttman2 a écrit :

Bon j'ai pas oracle sous la main mais
si tu transformes ton datetime_millisecondes  
en chaine de caractères, tu peux sans doute importer
la première partie datetime_secondes dans un
nouveau champ et la partie restante millisecondes dans un
autre champ ... puis créer un index unique sur  
ces 2 champs, non ?


c'était ma 1ere idée, je l'ai testé, mais ça me pénalise énormément au niveau vitesse :/
c'est une table de plus de 10 millions d'enregistrements [:joce]
 

gizmo a écrit :

Question subsidiaire: t'as vraiment besoin que l'index soit unique?


non, et ça m'a donné une idée : si je créé une surrogate key rattachée à une séquence, ça me permet d'avoir une clé unique, avec un index non unique. ça te semble viable ?

Reply

Marsh Posté le 10-12-2004 à 16:53:07    

oui, mais encore faut-il voir si ta clef unique va être utilisée dans une relation, sinon tu n'as même pas besoin d'elle.

Reply

Marsh Posté le 10-12-2004 à 17:04:52    

sauf erreur de ma part : à partir de la version 9 (peut etre en 8i, à vérifier), le type de données TIMESTAMP permet de répondre à tes besoins.....il fonctionne comme le type DATE mais permet la gestion des fractions de seconde.

Reply

Marsh Posté le 10-12-2004 à 19:01:05    

oui, enfin, on peut supposer que harko s'y connait suffisament pour avoir cherché si timestamp existait dans sa version d'Oracle avant de poser sa question. non?

Reply

Marsh Posté le 10-12-2004 à 19:06:00    

HEUH LE COUP DE LA BLONDE A FORTE POITRINE POUR APPATER LE CHALAND? C COPYRIGHT(MOI) :o :o :o :o :o :o

Reply

Marsh Posté le 10-12-2004 à 19:06:00   

Reply

Marsh Posté le 10-12-2004 à 19:17:12    

jielbi a écrit :

sauf erreur de ma part : à partir de la version 9 (peut etre en 8i, à vérifier), le type de données TIMESTAMP permet de répondre à tes besoins.....il fonctionne comme le type DATE mais permet la gestion des fractions de seconde.

n'existe pas sur 8i :spamafote:


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 10-12-2004 à 19:17:44    

chrisbk a écrit :

HEUH LE COUP DE LA BLONDE A FORTE POITRINE POUR APPATER LE CHALAND? C COPYRIGHT(MOI) :o :o :o :o :o :o

"les bonnes idées sont faites pour être réutilisées" (c) moi :o


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 10-12-2004 à 19:19:54    

Harkonnen a écrit :

n'existe pas sur 8i :spamafote:


8i n'est plus supporté, passe à 9i ou 10chépakellelettre et fais pas chier!:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 10-12-2004 à 19:42:10    

10g
 
Pourquoi pas un NUMBER(17) et stocker la date sous forme aaaammjjhhmissdcm?
 
Qui a dit barbare? :whistle:

Reply

Marsh Posté le 11-12-2004 à 01:01:12    

Harkonnen a écrit :

j'ai un souci avec ce $£§!%* d'Oracle : j'importe dans une table des données en provenance d'un autre SGBF, qui gère les datetime à la milliseconde près. Ce champ étant un champ critique, je souhaite lui coller un index et j'obtiens un merveilleux "ORA-01452: cannot CREATE UNIQUE INDEX; duplicate keys found"
diantre me dis-je ! des clés dupliquées ! et là, je me souviens que les datetime d'Oracle vont jusqu'à la seconde, me voila dans la merde !
 
qwechtieunne :  
- comment pourrais-je simuler un datetime à la milliseconde ?
- comment indexer ce truc ?


t'as essayé d'enlever le UNIQUE dans "CREATE UNIQUE INDEX" ? [:itm]
t'as besoin de la milliseconde ou c'est juste pour que ça soit comme avant ? :??:


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 11-12-2004 à 01:28:14    

ben +1 avec mareek [:mlc], t'as pas l'air de faire la différence entre index et clé unique :??:
 
(et qui c'est les guignols qui proposent d'ajouter les millisecondes pour solutionner ce problème? en quoi ça va rendre les timestamps unique? [:kiki])

Reply

Marsh Posté le 11-12-2004 à 13:10:42    

the real moins moins a écrit :

ben +1 avec mareek [:mlc], t'as pas l'air de faire la différence entre index et clé unique :??:
 
(et qui c'est les guignols qui proposent d'ajouter les millisecondes pour solutionner ce problème? en quoi ça va rendre les timestamps unique? [:kiki])


 
Guignols oui ... mais de l'info  :pfff:  
 
Ecoute mon gros  :kaola: si tas d'un coté base X un
timestamp TX à la milliseconde qui joue le rôle de clé unique
et de l'autre  base Y des timestamp limités à la seconde TY, la soluce
la + évidente est de découper TX en TY + TZ  
 
Maintenant à question générale ... réponse générale   :o  
 

Reply

Marsh Posté le 11-12-2004 à 13:34:03    

euh, je n'avais pas saisi que la base d'origine avait une clé unique sur cette fameuse colonne timestamp.
c'est bien CA ce que je trouve idiot hein :o


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 11-12-2004 à 13:53:55    

vttman2 a écrit :

Guignols oui ... mais de l'info  :pfff:  
 
Ecoute mon gros  :kaola: si tas d'un coté base X un
timestamp TX à la milliseconde qui joue le rôle de clé unique
et de l'autre  base Y des timestamp limités à la seconde TY, la soluce
la + évidente est de découper TX en TY + TZ  
 
Maintenant à question générale ... réponse générale   :o


Mettre le timestamp en clef c'est stupide :spamafote:
La meilleur chose à faire, c'est de mettre la clef sur un entier lié à une séquence.


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 11-12-2004 à 14:00:12    

mareek a écrit :

Mettre le timestamp en clef c'est stupide :spamafote:
La meilleur chose à faire, c'est de mettre la clef sur un entier lié à une séquence.


 
+1 Mais je suis d'accord avec toi Mareek  
 
Mais bon au départ on parlait d'unique index qui marchait pas
car dans la cible on tronquait les millisecondes et donc
ça créait des doublons ...
 

Reply

Marsh Posté le 13-12-2004 à 21:14:50    

moi je suis ++ avec ceux qui pense qu'une clé unique sur un tel champ est dangereux (je ne remet par contre pas en compte d'utilité de stocker à la milliseconde près :D)

Reply

Marsh Posté le 13-12-2004 à 21:26:26    

et une fois de plus tu nous montre la que tu n'as aucune connaissance du fonctionnement d'un vrai sgbd [:sinking]

Reply

Marsh Posté le 13-12-2004 à 21:37:36    

explique-toi stp

Reply

Marsh Posté le 13-12-2004 à 21:38:55    

je suis le stagiaire d'harko, je n'ai pas a m'expliquer [:sinking]

Reply

Marsh Posté le 13-12-2004 à 21:48:59    

chrisbk a écrit :

je suis le stagiaire d'harko, je n'ai pas a m'expliquer [:sinking]


ça c'est constructif comme intervention. ça représente bien le personnage.
 
tiens, j'ai une chanson pour toi :
 

Citation :


Brassens - Quand les cons sont braves
 
Sans être tout à fait un imbécile fini,
Je n'ai rien du penseur, du phénix, du génie.
Mais je n' suis pas le mauvais bougre et j'ai bon cœur,
Et ça compense à la rigueur.
 
{Refrain:}
Quand les cons sont braves
Comme moi,
Comme toi,
Comme nous,
Comme vous,
Ce n'est pas très grave.
Qu'ils commettant,
Se permettent
Des bêtises,
Des sottises,
Qu'ils déraisonnent,
Ils n'emmerdent personne.
Par malheur sur terre
Les trois quarts
Des tocards
Sont des gens
Très méchants,
Des crétins sectaires.
Ils s'agitent,
Ils s'excitent,
Ils s'emploient,
Ils déploient
Leur zèle à la ronde,
Ils emmerdent tout l' monde.
 
Si le sieur X était un lampiste ordinaire,
Il vivrait sans histoir's avec ses congénères.
Mais hélas ! il est chef de parti, l'animal :
Quand il débloque, ça fait mal !
 
{Refrain}
 
Si le sieur Z était un jobastre sans grade,
Il laisserait en paix ses pauvres camarades.
Mais il est général, va-t-en-guerr', matamore.
Dès qu'il s'en mêle, on compt' les morts.
 
{Refrain}
 
Mon Dieu, pardonnez-moi si mon propos vous fâche
En mettant les connards dedans des peaux de vaches,
En mélangeant les genr's, vous avez fait d' la terre
Ce qu'elle est : une pétaudière !
 
{Refrain}


 
Merci beaucoup pour ta belle performance tout de même :jap:
 
En tout cas, une chose me rassure : je n'ai fait que confirmer les dires de deux personnes qui s'y connaissent assez bien, pour une fois mise à part toi, on me foutra peut-être la paix.


Message édité par Arjuna le 13-12-2004 à 21:50:49
Reply

Marsh Posté le 13-12-2004 à 21:53:16    

ah oui ? et bien moi je te dédie celle la


 
Moskau
Fremd und geheimnisvoll
Türme aus rotem Gold
Kalt wie das Eis
Moskau
Doch wer dich wirklich kennt
Der weiß, ein Feuer brennt
In dir so heiß
 
Kosaken hey hey hey hebt die Gläser
hey hey
Natascha ha ha ha du bist schön
ha ha
Tovarisch(?) hey hey hey auf das Leben
hey hey
Auf Dein Wohl Bruder hey Bruder ho
hey hey hey hey
Moskau, Moskau
Wirf die Gläser an die Wand
Rußland ist ein schönes Land
Ho ho ho ho ho, hey
Moskau, Moskau
Deine Seele ist so groß
Nachts da ist der Teufel los
Ha ha ha ha ha, hey
Moskau, Moskau
Liebe schmeckt wie Kaviar
Mädchen sind zum küssen da
Ho ho ho ho ho, hey
Moskau, Moskau
Komm wir tanzen auf dem Tisch
Bis der Tisch zusammenbricht
Ha ha ha ha ha
 
Moskau
Tor zur Vergangenheit
Spiegel der Zarenzeit
Rot wie das Blut
Moskau
Wer deine Seele kennt
Der weiß, die Liebe brennt
Heiß wie die Glut
 
Kosaken hey hey hey hebt die Gläser
hey hey
Natascha ha ha ha du bist schön
ha ha
Tovarisch(?) hey hey hey auf die Liebe
hey hey
Auf Dein Wohl Mädchen hey Mädczhen ho
hey hey hey hey
Moskau, Moskau
Wirf die Gläser an die Wand
Rußland ist ein schönes Land
Ho ho ho ho ho, hey
Moskau, Moskau
Deine Seele ist so groß
Nachts da ist der Teufel los
Ha ha ha ha ha, hey
Moskau
Lala lala lala la, lala lala lala la
Ho ho ho ho ho, hey
Moskau
Lala lala lala la, lala lala lala la
Ha ha ha ha ha
 
Oh, oh oh oh oh, oh oh oh, oh oh oh oh
Moskau, Moskau
Moskau, Moskau
Wodka trinkt man pur und kalt
Das macht hundert Jahre alt
Ho ho ho ho ho, hey
Moskau, Moskau
Väterchen dein Glas ist leer
Doch im Keller ist noch mehr
Ha ha ha ha ha
 
Kosaken hey hey hey hebt die Gläser
hey hey
Natascha ha ha ha du bist schön
ha ha
Tovarisch hey hey hey auf die Liebe
hey hey
Auf Dein Wohl Bruder hey Bruder ho
hey hey hey hey
Moskau, Moskau
Wirf die Gläser an die Wand
Rußland ist ein schönes Land
Ho ho ho ho ho, hey
Moskau, Moskau
Deine Seele ist so groß
Nachts da ist der Teufel los
Ha ha ha ha ha, hey
Moskau, Moskau
Liebe schmeckt wie Kaviar
Mädchen sind zum küssen da
Ho ho ho ho ho


 
et je te prends au ping pong quand tu veux.

Reply

Marsh Posté le 13-12-2004 à 21:56:31    

c'est le topic de "ton maître de stage" qu'on pollue là, moi je m'en fous à la base.

Reply

Marsh Posté le 13-12-2004 à 21:56:47    

bon on va pas épiloguer hein ! je me suis démerdé avec une surrogate key, ça marche très bien et voila !
quand au fait de mettre un index unique, et autres trucs qui vous paraissent bizarres, c'est juste qu'on m'a demandé de transférer des données venant d'une base DB2 vers une base Oracle et de respecter le plus possible la structure (donc de garder les indexes, et tout). maintenant, pourquoi mettre un index sur le timestamp, c'est parce que la base d'origine en possède un et puis voilà. apparemment l'application hote permet de rechercher des infos selon le critère de l'heure, d'ou la présence de l'index.
 
et pour répondre à moins moins : bien sur que je connais la différence entre index unique et clé unique [:kiki]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 13-12-2004 à 21:59:02    

pas de souci pour les explications harko :) celà dit, je reste sceptique quant à la véritable utilité d'un index unique sur ce type de champ, par rapport au risque de violation de clé.
par simple curriosité, c'est quoi comme infos ?


Message édité par Arjuna le 13-12-2004 à 21:59:44
Reply

Marsh Posté le 13-12-2004 à 21:59:09    

DB2 vers Oracle... [:ciler]
 
 j'ai deja fait une fois, joli bordel a faire , mais ca fonctionnait


---------------
IVG en france
Reply

Marsh Posté le 13-12-2004 à 22:02:32    

Arjuna a écrit :

pas de souci pour les explications harko :) celà dit, je reste sceptique quant à la véritable utilité d'un index unique sur ce type de champ, par rapport au risque de violation de clé.
par simple curriosité, c'est quoi comme infos ?

ce sont des infos boursières, donc des données très critiques au niveau de la date et de l'heure :D
"taiiiinnnnn, mon action a perdu 10 € depuis 9:02:04.125 :fou:"
"dommage, t'aurais du vendre, elle était à 40 € à 05:14:06.187 :dtc:"


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 13-12-2004 à 22:03:02    

uriel a écrit :

DB2 vers Oracle... [:ciler]
 
 j'ai deja fait une fois, joli bordel a faire , mais ca fonctionnait

tu m'étonnes que c'est un joli bordel :/
 
edit: surtout que je bosse sur 8i [:sisicaivrai]


Message édité par Harkonnen le 13-12-2004 à 22:03:24

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 13-12-2004 à 22:05:04    

ok. ça me semble bizarre qu'on ne risque pas d'avoir de boublon sur ce type d'infos :)
 
mais bon, si l'ancien système tournait correctement avec un index unique, pourquoi pas ;)
 
PS: si tu rédiges un compte rendu de migration, je te conseille d'y relater ce point, histoire que ça te retombe pas dessus si avec la nouvelle base ça merde ;)

Reply

Marsh Posté le 13-12-2004 à 22:05:35    

bin stocke la sous forme de chaine de caractere en utilisant QueryPerformanceCounter pour avoir une précision de ouf [:sinking]

Reply

Marsh Posté le 13-12-2004 à 22:07:04    

chrisbk a écrit :

bin stocke la sous forme de chaine de caractere en utilisant QueryPerformanceCounter pour avoir une précision de ouf [:sinking]


ouais m'enfin vive les performances, passer d'un type float (en interne, une date n'est ni plus ni moins qu'un float) à un type non pondéré...
 
ceci dit, si les dates en question ne contiennent que la partie horraire, why not, puisque de toute façon, la décimale au niveau d'un datetime se fait entre la partie date et la partie horraire.


Message édité par Arjuna le 13-12-2004 à 22:09:11
Reply

Marsh Posté le 13-12-2004 à 22:07:25    

Arjuna a écrit :

ok. ça me semble bizarre qu'on ne risque pas d'avoir de boublon sur ce type d'infos :)
 
mais bon, si l'ancien système tournait correctement avec un index unique, pourquoi pas ;)
 
PS: si tu rédiges un compte rendu de migration, je te conseille d'y relater ce point, histoire que ça te retombe pas dessus si avec la nouvelle base ça merde ;)

déjà fait, parce que j'ai rencontré des merdes encore pires que celle pour laquelle j'ai ouvert ce topic ! j'ai pas envie que tout le monde me tombe dessus parce que leur portefeuille se casse la gueule [:psywalk]


Message édité par Harkonnen le 13-12-2004 à 22:07:44

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 13-12-2004 à 22:10:43    

va bosser chez microsoft ils ont de bons avocats...:o

Reply

Marsh Posté le 13-12-2004 à 22:10:54    

Harkonnen a écrit :

déjà fait, parce que j'ai rencontré des merdes encore pires que celle pour laquelle j'ai ouvert ce topic ! j'ai pas envie que tout le monde me tombe dessus parce que leur portefeuille se casse la gueule


c'est sûr qu'en plus, quand il s'agit de portefeuil d'actions, t'auras certainement du mal à dédomager une personne avec les 3 euros qui doivent traîner sur ton compte courrant :D

Reply

Marsh Posté le 13-12-2004 à 22:24:44    

Harkonnen a écrit :

bon on va pas épiloguer hein ! je me suis démerdé avec une surrogate key, ça marche très bien et voila !
quand au fait de mettre un index unique, et autres trucs qui vous paraissent bizarres, c'est juste qu'on m'a demandé de transférer des données venant d'une base DB2 vers une base Oracle et de respecter le plus possible la structure (donc de garder les indexes, et tout). maintenant, pourquoi mettre un index sur le timestamp, c'est parce que la base d'origine en possède un et puis voilà. apparemment l'application hote permet de rechercher des infos selon le critère de l'heure, d'ou la présence de l'index.
 
et pour répondre à moins moins : bien sur que je connais la différence entre index unique et clé unique [:kiki]

euh tu le fais expres?
index != clé unique.
tu dis que y'avait un index et tu parles d'en faire une clé unique, y'a de quoi se poser des questions non?


Message édité par the real moins moins le 13-12-2004 à 22:25:53

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 13-12-2004 à 22:25:37    

ca me fait peur oracle...si j'arrive à faire mon stage où je veux, je risque d'avoir à migrer une base SQL server vers de l'Oracle (du 9i ou + j'espère) ...et sortir de l'asp vers du JSP...
 
ca va etre fun et bigarré...


---------------
Jubi Photos : Flickr - 500px
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed