Cas Fantastic : Mise en place de la zone d'extraction
L'objectif est d'abord de créer la BDE. Les noms des tables et vues seront préfixés :
f_dans le schémabde(f pour projet Fantastique) ;ou
f_bde_si vous ne disposez que d'un seul schéma pour toutes vos BD.
Question
Créez une vue f_bde_catalogue pour la table de la base Oracle "catalogue".
Indice
Enregistrez l'instruction de création de votre vue dans un fichier f_bde_catalogue.sql.
Indice
Créez un fichier
f_bde.sqlqui va appeler toutes vos instructions de création d'objets dans la BDE.Sa première ligne est donc :
@f_bde_catalogue.sqlOn pourra éventuellement créer un fichier
f.sqlqui appellera les scriptsf_bde.sql,f_bdt.sqletf_dw.sql
Indice
Utiliser l'instruction CREATE OR REPLACE VIEW pour la création de la vue, pour permettre la recréation de la vue par le script f_bde.sql.
Question
Créez une table externe pour chacun des fichiers marketing.ods et departementsInsee2003.txt.
Indice
Faites un export CSV du fichier
marketing.odsvers le fichiermarketing.csvCopiez le, ainsi que
departementsInsee2003.txt, dans un dossierdatade votre compte sur le serveursme-oracle.sme.utcOuvrez l'accès à ce dossier en lecture (
chmod 755)Créez un dossier
tmpouvert en lecture et écriture (chmod 777) ainsi que les fichiers de logs et de rejet sur lesquels vous souhaiterez écrire (chmod 666)Créez les objets
DIRECTORYpermettant de pointer sur les répertoiresdataettmp.Créez une table externe pour
departementsInsee2003.txt, en envoyant les fichiers de rejetdepartementsInsee2003.txt.badet de logdepartementsInsee2003.txt.logdans votre dossiertmp.Testez votre table externe :
SELECT * FROM ...Vérifiez que tout s'est bien passé en examinant les fichiers de rejet et de log
De la même façon, créez une table externe pour
marketing.csvet vérifier l'accès aux données
Indice
Pensez que les objets DIRECTORY sont partagés au niveau de toute l'instance et ne sont pas spécifiques à un schéma.
Donc si deux users créent un même DIRECTORY nommé tmp, il y aura un conflit (la seconde création écrasera la première).
Indice
Pour accéder à un répertoire d1 situé dans un répertoire d0, d0 doit être accessible en exécution (chmod 711).
Indice
Pour lire les fichiers .log et .bad :
more ~/tmp/import.log
more ~/tmp/import.bad
Indice
Vous pouvez vider les fichiers .log régulièrement pour en faciliter la lecture.
echo > ~/tmp/import.log
Indice
Vous pouvez supprimer les fichiers .bad après avoir traité les causes d'un rejet (si une exécution ne génère pas de rejet elle ne crée pas de fichier de rejet, et ne modifie donc pas un éventuel fichier existant).
rm ~/tmp/import.bad
Question
Créez une table externe pour le fichier Fantastic
Indice
Créez un nouvel objet
DIRECTORYpermettant de pointer sur le répertoire où il se trouve
Indice
Attention ce fichier est très volumineux, aussi ne faites pas de SELECT * dessus, sous peine d'attendre longtemps la fin de l'exécution (le serveur devant renvoyer plusieurs Mo de données).
Faites des SELECT partiels avec la clause ROWNUM pour limiter les données à rapatrier et des select avec opérations de regroupement (min ou max typiquement).
SELECT ... FROM ... WHERE rownum<=N;
Indice
Notez qu'en cas d'erreur à l'import portant sur toutes les lignes, le fichier de log risque de devenir très volumineux, pouvant conduire à la saturation de votre compte. Videz le fichier de log après avoir généré une telle erreur.
Pour vérifier la taille du log :
ls -l ~/tmp/import.log
Indice
Pour tester toutes les lignes : SELECT count(*), min(...), max(...), max(...) ...