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 12/11/2007, 16h10   #1
Invité régulier
 
Inscription : octobre 2005
Messages : 31
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 31
Points : 7
Points : 7
Par défaut Batch et sql loader

Bonjour a tous,

je debute en oracle, j'espere que mon post est au bon endroit, alors voila ce que je veux faire:
j'ai a ma disposition un fichier .csv sur un serveur distant qui est mis à jour quotidiennement. Je souhaiterai pouvoir intégrer les données contenues dans ce fichier a l'aide de sql loader, et ce chaque jour a une heure bien precise. Est-ce que Oracle sait faire ca tout seul? si oui comment, et si non quelle est la solution la plus efficace?
Donc pour résumer, les actions a effectuer une fois par jour a une eure prédéfini (00h05) :
-récupérer le fichier .csv
-effectuer la mise à jour des données de ma base à l'aide de sql loader
rastali est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2007, 16h22   #2
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 523
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 523
Points : 3 972
Points : 3 972
Il ne me semble pas que l'on puisse automatisé un sqlloader directement par un job oracle.

Mais ça se fait facilement par une ligne de commande lancé dans la crontab sous UNix ou dans une tâche planifiée sous Windows.

En réfléchissant, il doit bien être possible de lancer une ligne de commande par un job stocké en base mais je ne l'ai jamais fait.
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2007, 16h23   #3
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
pour la mise à jour, il suffit de créer une table externe

Pour la copie du CSV, ce devra être avec un shell sur l'OS
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2007, 16h36   #4
Invité régulier
 
Inscription : octobre 2005
Messages : 31
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 31
Points : 7
Points : 7
Ok, merci de vos réponses. Donc pour le batch je vais passer par une tache planifié windows. Je ne connaissais pas les tables externes, je viens de lire ca sur le site et ca fait exactement ce que je veux faire, dans le sens ou je ne dois pas modifier les données récupérées du fichier csv, donc c'est parfait! Et donc si j'ai bien compris, une fois la table externe créée, si je remplace le fichier csv par le nouveau fichier mis a jour, je n'ai rien a faire de plus? Quand je ferai un select sur ma table externe, j'aurai directement les données du nouveau fichier? (en gros les données du fichier sont bien lu directement dans le fichier, cela ne necessite aucune action utilisateur de "chargement" du fichier?)
rastali est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2007, 16h44   #5
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
en effet, la table externe n'est ni plus ni moins qu'une description du fichier (comme SQL*Loader) qui permet à Oracle de lire convenablement son contenu... le contenu étant lu en temps réél, un changement dans le fichier sera immédiatement répercuté
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2007, 17h03   #6
Invité régulier
 
Inscription : octobre 2005
Messages : 31
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 31
Points : 7
Points : 7
Ok merci! Une derniere petite question, ou puis-je placer le fichier? est-ce que je peux definir un repertoire sur un serveur distant, ou bien est-ce que le fichier doit necessairement etre placé sur le serveur oracle, dans un repertoire connu de oracle, et si oui lequel?
rastali est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2007, 17h10   #7
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
il faut créer une DIRECTORY dans la base qui pointe sur un emplacement sur le serveur Oracle.
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2007, 10h50   #8
Invité régulier
 
Inscription : octobre 2005
Messages : 31
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 31
Points : 7
Points : 7
J'ai une derniere petite question, on me fournit egalement un fichier .txt sans délimiteur, et j'ai l'emplacement de chaque champ, une ligne représentant un enregistrement. J'ai donc le numero d'emplacement du premier caractère de mon champs et la longueur. est-ce possible de faire une table externe avec ce type de fichier, et si oui comment? car sur les exemples de table externe que j'ai trouvé il y a toujours un délimiteur (souvent la vigule).
rastali est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2007, 11h08   #9
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
tu as la longueur de chaque champs ?
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2007, 13h13   #10
Invité régulier
 
Inscription : octobre 2005
Messages : 31
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 31
Points : 7
Points : 7
oui j'ai la position du premier caractere et la longueur
ex:code(1, 8); libellé(9,25); etc et donc le champ code commence a la position 1 et contient 8 carcateres, et le champ libellé commence a la position 9 et contient 25 carcteres etc. Je pense que ca doit etre possible mais les exemples de tables externes que j'ai trouvé sont tous avec des delimiteurs...
rastali est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2007, 14h22   #11
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
si tu trouves des exemples avec SQL*Loader tu peux t'en inspirer, le fichier de contrôle étant similaire voir identique
orafrance 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 05h04.


 
 
 
 
Partenaires

Hébergement Web