L'objectif est d'abord de créer la BDE. Les noms des tables et vues seront préfixés :
f_
dans le schéma bde
(f pour projet Fantastique) ;
ou f_bde_
si vous ne disposez que d'un seul schéma pour toutes vos BD.
Créez une vue f_bde_catalogue
pour la table de la base Oracle "catalogue".
Enregistrez l'instruction de création de votre vue dans un fichier f_bde_catalogue.sql
.
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 scripts f_bde.sql
, f_bdt.sql
et f_dw.sql
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
.
Créez une table externe pour chacun des fichiers marketing.ods
et departementsInsee2003.txt
.
Faites un export CSV du fichier marketing.ods
vers le fichier marketing.csv
Copiez le, ainsi que departementsInsee2003.txt
, dans un dossier data
de votre compte sur le serveur sme-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
)
Créez les objets DIRECTORY
permettant de pointer sur les répertoires data
et tmp
.
Créez une table externe pour departementsInsee2003.txt
, en envoyant les fichiers de rejet departementsInsee2003.txt.bad
et de log departementsInsee2003.txt.log
dans votre dossier tmp
.
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
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).
Pour accéder à un répertoire d1
situé dans un répertoire d0
, d0
doit être accessible en exécution (chmod 711
).
Pour lire les fichiers .log
et .bad
:
more ~/tmp/import.log
more ~/tmp/import.bad
Vous pouvez vider les fichiers .log
régulièrement pour en faciliter la lecture.
echo > ~/tmp/import.log
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
Créez une table externe pour le fichier data.csv
Créez un nouvel objet DIRECTORY
permettant de pointer sur le répertoire /home/nf26/data
Attention le fichier data.csv
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;
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
Pour tester toutes les lignes : SELECT count(*), min(...), max(...), max(...) ...