|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() Ingénieur développement logiciels Inscription : juillet 2005 Messages : 513 ![]() |
Bonjour,
Je voulais savoir, si dans un fichier de controle (CTL) il était possible d'ajouter dans la clause WHEN un appel à une table existante en base? Exemple: Ajout collaborateur si ID_Entreprise existe dans la table Entreprise ? Si non, quelle alternative? Un trigger? Merci d'avance |
|
|
00
|
|
|
#2 |
![]() ![]() |
Vous avez déjà eu la réponse dans un autre sujet, tables externes.
Vous mappez votre fichier dans une table, après ça se manipule comme n'importe quelle table, vous pouvez faire des requêtes, des insert / updates / merge (dans votre table finale par exemple).
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#3 |
|
Membre confirmé
![]() Ingénieur développement logiciels Inscription : juillet 2005 Messages : 513 ![]() |
Oui, mais pourquoi utiliser une table externe si l'on peut utiliser une table existante.
Donc on ne peut pas faire appel a une table existante depuis un fichier CTL? Une question un peu hors sujet: Je ne trouve aucun exemple sur internet concernant une comparaison d'entier dans le When du CTL. Exemple: si on a trois colonnes (id_colis, type_colis, nom_expediteur) faire un into table colis when type_colis>3 C'est possible? Merci pour la réponse... |
|
|
00
|
|
|
#4 |
![]() ![]() |
Plutôt que de chercher à réaliser un processus ETL dans votre fichier de contrôle, voyez la table externe comme étant une source de données classique que vous pouvez utiliser partout.
C'est un simple mapping mais qui vous permet d'utiliser le SQL & PL/SQL, probablement plus complet que les possibilités des fichiers CTL. Enfin ce n'est que mon avis !
__________________
Email : http://scr.im/waldar |
|
10
|
|
|
#5 |
|
Membre confirmé
![]() Ingénieur développement logiciels Inscription : juillet 2005 Messages : 513 ![]() |
Supposons que j'ai effectivement une table externe, décrite dans un csv quelque part.
Si le CSV est remplacé chaque jour? Cette table sera mise à jour de la même manière n'est ce pas? Est ce mieux d'utiliser une table externe, plutot que d'utiliser un trigger pré insertion pour faire des vérification? Avec SQLLoader, est il quand même possible de faire une comparaison d'entier suivant la valeur d'une colonne? je n'ai trouvé que des comparaison que string... Merci beaucoup. Même si vous dites que ce n'est "que" votre avis, vous semblez bien renseigné |
|
|
00
|
|
|
#6 |
![]() ![]() |
Si le csv change (il faut qu'il conserve la même structure bien entendu), le contenu de la table changera lorsqu'on fera un select dessus.
Voyez la table externe comme un moyen de requêter sur votre fichier, ce n'est pas une table finale. Pour les comparaisons, je ne sais pas du tout !
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#7 |
|
Membre confirmé
![]() Ingénieur développement logiciels Inscription : juillet 2005 Messages : 513 ![]() |
Re-bonjour,
j'aurais en fait une question complémentaire. En supposant que j'ai 3 fichiers csv, liés à 3 3 tables externes, et que j'ai une vue utilisant ces 3 tables externes. Si je comprends bien, en cas de modification des fichiers CSV, les tables externes changeront également (lors d'un select dessus) et donc la vue sera modifiée automatiquement également n'est ce pas? Je ne sais pas vraiment quoi penser, mais j'ai comme l'impression qu'un select sur un table externe prendra beaucoup plus de temps qu'un select sur une table externe... non? Les temps d'accès doivent être multipliés par X non? Peut on indexer une table externe? La table externe est elle visible depuis un outil comme sqlDevelopper? En cas d'utilisation d'une vue liée à 3 tables externes qu'en serait il des temps de calculs? Ce ne serait pas exorbitant comparé à une autre solution basée sur des tables physiques? (+ par curiosité: si on déclare une table externe, peut on poser des conditions dessus? Par exemple si field3= 'blabla' ? ainsi, même en tant que table externe, un certain écrémage sera fait... Mais encore une fois, meme si ca existe, ca doit bouffer du temps non?) Merci beaucoup! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com