|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Inscription : juin 2003 Messages : 156 ![]() |
Bonjour,
J'aimerais vous suggérer une problématique et prendre vos avis éclairés à son sujet ! Imaginons un fichier transformé en table Oracle via le *Loader par exemple. La table se présenterait comme suit, c'est à dire que la 1ère colonne contient un type d'enregistrement et la suivante des données. L'idée à ce stade est de vérifier que les types d'enregistrement se suivent dans l'ordre fonctionnel qui convient... Et également en corrolaire, la présence des enregistrements obligatoires. Code :
Merci, Fred |
||
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
une table n'a pas d'ordre a priori... c'est à la restitution des données que tu imposeras un ordre d'affichage.
|
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : juin 2003 Messages : 156 ![]() |
Je suis d'accord, je n'ai pas été tout à fait clair alors. En fait, la table est issue d'un fichier qui lui a un ordre... Donc pour respecter l'ordre du fichier dans la construction de la table, j'ai pensé ajouter une séquence comme un numéro de ligne ou d'enregistrement. L'utilisation de la clause order by devient alors possible.
Il existe également une colonne qui contient une valeur permettant de lier tous les enregistrements décrivant une unité fonctionnelle cohérente (faite d'une séquence d'enregistrements justement). Pê une porte ouverte vers l'utilisation d'une clause group by ? Dès lors la problématique reste entière... |
|
|
00
|
|
|
#4 | |
![]() Inscription : décembre 2002 Messages : 2 397 ![]() |
Citation:
|
|
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : juin 2003 Messages : 156 ![]() |
Je réexplique tout mais en faisant super simple
Dans le fichier initial, il y a des unités fonctionnelles constituées par une suite logique d'enregistrements typés par leur première colonne { T_EN1 T_EN2 .. T_ENn } Après le chargement en table via le *loader, il y a une table avec le contenu du fichier. Existe-t-il un moyen astucieux pour vérifier que la séquence des enregistrements pour chaque unité fonctionnelle est correcte ? Merci, j'espère avoir été plus clair, Frédéric |
|
|
00
|
|
|
#6 | |
![]() Inscription : décembre 2002 Messages : 2 397 ![]() |
Comme vous disiez vous-même :
Citation:
Après, pour le contrôle, il faut vérifier les divers logs de SQL*Loader. S'il n'y a aucune erreur, c'est que le chargement s'est déroulé conformément à votre fichier initial. |
|
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : juin 2003 Messages : 156 ![]() |
Oui je vois bien mais le problème n'est pas là en fait. Je n'ai pas l'assurance que le fichier chargé soit lui même conforme à la norme attendue. C'est ça que je dois vérifier. Je me demandais si c'était plus simple de le faire dans le fichier initial ou dans la table chargée.
(Sous réserve naturellement que le chargement se soit bien déroulé) |
|
|
00
|
|
|
#8 |
![]() ![]() Consultant en Business Intelligence Inscription : janvier 2007 Messages : 1 192 ![]() |
Bonjour tout le monde,
ftrifiro, si tu veux être sur de l'ordre des enregistrement avec sqlldr, charge complètement ton fichier dans une table temporaire en prenant soin d'ajouter un numéro de séquence, puis tu fait tes différents insert dans les tables qui vont bien. là tu auras la certitude de l'ordre. |
|
|
00
|
|
|
#9 |
|
Membre du Club
![]() Inscription : juin 2003 Messages : 156 ![]() |
D'accord donc la solution proposée est :
- chargement global via le *Loader du fichier dans une table temporaire - lecture ligne à ligne de la table temporaire (et analyse) - insertion des lignes dans les tables typées par enregistrement Donc je laisserais tomber le *Loader pour charger les tables cibles. La solution est sympa et ne peut que fonctionner. Idéalement, j'aurais aimé pouvoir utiliser aussi le *Loader pour ça. Oui, je sais, le beurre, l'argent du beurre et le joli sourire de la crémière (version soft )A+, Fred |
|
|
00
|
|
|
#10 | |
![]() Inscription : décembre 2002 Messages : 2 397 ![]() |
Citation:
Il n'y a pas de notion d'ordre dans les tables relationnelles. L'ordre est un aspect de restitution, lors du SELECT, qui impose d'utiliser un ORDER BY sur la colonne qui convient (celle qui a été générée par séquence). Une table temporaire n'a aucun intérêt quant à l'ordre. |
|
|
|
00
|
|
|
#11 | |
![]() ![]() Consultant en Business Intelligence Inscription : janvier 2007 Messages : 1 192 ![]() |
Citation:
|
|
|
|
00
|
|
|
#12 |
|
Membre du Club
![]() Inscription : juin 2003 Messages : 156 ![]() |
Oui ben vous avez tous les deux raisons sur ce coup là, je crois que nous sommes bien d'accord, l'ordre est rendu possible par l'introduction de la séquence pendant l'étape de chargement et l'utilisation d'une clause order by.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com