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.sql
qui va appeler toutes vos instructions de création d'objets dans la BDE.Sa première ligne est donc :
@f_bde_catalogue.sql
On pourra éventuellement créer un fichier
f.sql
qui appellera les scriptsf_bde.sql
,f_bdt.sql
etf_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.ods
vers le fichiermarketing.csv
Copiez le, ainsi que
departementsInsee2003.txt
, dans un dossierdata
de votre compte sur le serveursme-oracle.sme.utc
Ouvrez l'accès à ce dossier en lecture (
chmod 755
)Créez un dossier
tmp
ouvert 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
DIRECTORY
permettant de pointer sur les répertoiresdata
ettmp
.Créez une table externe pour
departementsInsee2003.txt
, en envoyant les fichiers de rejetdepartementsInsee2003.txt.bad
et de logdepartementsInsee2003.txt.log
dans 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.csv
et 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
DIRECTORY
permettant 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(...) ...