Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Outils > SQL*Loader
SQL*Loader Forum d'entraide sur Oracle SQL*Loader
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/03/2011, 09h50   #1
Membre confirmé
 
Avatar de jamesleouf
 
Homme
Ingénieur développement logiciels
Inscription : juillet 2005
Messages : 513
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Finance

Informations forums :
Inscription : juillet 2005
Messages : 513
Points : 215
Points : 215
Par défaut SQLLOADER: appel à une autre table dans la clause when du CTL

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
__________________
James PaBond
http://www.greenquizz.com/
jamesleouf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 11h02   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 446
Points : 10 446
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Citation:
Envoyé par jamesleouf Voir le message
Si non, quelle alternative ?
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
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 11h22   #3
Membre confirmé
 
Avatar de jamesleouf
 
Homme
Ingénieur développement logiciels
Inscription : juillet 2005
Messages : 513
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Finance

Informations forums :
Inscription : juillet 2005
Messages : 513
Points : 215
Points : 215
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...
__________________
James PaBond
http://www.greenquizz.com/
jamesleouf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 11h28   #4
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 446
Points : 10 446
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
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
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/03/2011, 11h35   #5
Membre confirmé
 
Avatar de jamesleouf
 
Homme
Ingénieur développement logiciels
Inscription : juillet 2005
Messages : 513
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Finance

Informations forums :
Inscription : juillet 2005
Messages : 513
Points : 215
Points : 215
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é
__________________
James PaBond
http://www.greenquizz.com/
jamesleouf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/03/2011, 11h42   #6
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 446
Points : 10 446
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
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
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 09h29   #7
Membre confirmé
 
Avatar de jamesleouf
 
Homme
Ingénieur développement logiciels
Inscription : juillet 2005
Messages : 513
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Finance

Informations forums :
Inscription : juillet 2005
Messages : 513
Points : 215
Points : 215
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!
__________________
James PaBond
http://www.greenquizz.com/
jamesleouf est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h52.


 
 
 
 
Partenaires

Hébergement Web