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(...) ...