Devoir Data WareHouse



Documents pareils
COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

TP Contraintes - Triggers

Jérôme FESSY. IUT de Paris 5. Base de Données. Cours Introductif. Base de Données

Bases de données avancées

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

Laboratoires de bases de données. Laboratoire n 6. Programmation SQL. par Danièle BAYERS et Louis SWINNEN

Auto-évaluation Oracle: cours de base

Bases de données relationnelles

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

TP 8: LES OPERATEURS ENSEMBLISTES

Master Exploration Informatique des données DataWareHouse

Notes de cours : bases de données distribuées et repliquées

Configurer la supervision pour une base MS SQL Server Viadéis Services

CREATION WEB DYNAMIQUE

Gestion des transactions et accès concurrents dans les bases de données relationnelles

Intégrité sémantique dans les bases de données relationnelles

Bases de Données relationnelles et leurs systèmes de Gestion

A QUOI SERVENT LES BASES DE DONNÉES?

SQL Historique

Corrigés détaillés des exercices

Cours Bases de données 2ème année IUT

Présentation Windows Azure Hadoop Big Data - BI

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

Compétences Business Objects

Historisation des données

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Partie 0 : Gestion des tablespace et des utilisateurs... 3

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

Quelques aspects du Relationnel-Objet du SGBD Oracle

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

Olivier Mondet

Bases de Données Avancées

Bases de Données Avancées PL/SQL

Introduction aux Bases de Données 2004/2005

MS SQL Express 2005 Sauvegarde des données

Langage SQL : créer et interroger une base

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

Administration des bases de données. Jean-Yves Antoine

PHP 5. La base de données MySql. A. Belaïd 1

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

A QUOI SERVENT LES BASES DE DONNÉES?

Bases de Données Réparties

Le Langage SQL version Oracle

Cours SQL. Base du langage SQL et des bases de données

Le Langage De Description De Données(LDD)

Optimisation SQL. Quelques règles de bases

//////////////////////////////////////////////////////////////////// Administration bases de données

Mysql avec EasyPhp. 1 er mars 2006

FileMaker 13. Guide de référence SQL

Bases de Données Avancées

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Installation d'un serveur FTP géré par une base de données MySQL

Le langage SQL (première partie) c Olivier Caron

1. Qu'est qu'un tablespace?

Modélisation et Gestion des bases de données avec mysql workbench

Introduction au PL/SQL Oracle. Alexandre Meslé

Création et Gestion des tables

Système de Gestion de Bases de Données Relationnelles. MySQL. Youssef CHAHIR

Gestion des utilisateurs et de leurs droits

Oracle Le langage procédural PL/SQL

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

BD51 BUSINESS INTELLIGENCE & DATA WAREHOUSE

Les déclencheurs. Version 1.0. Grégory CASANOVA

Département Génie Informatique

Le langage SQL Rappels

SQL sous SqlServer OLIVIER D. DEHECQ Olivier 0

I. MySQL : Serveur et SGBD

Les bases de données

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

OpenPaaS Le réseau social d'entreprise

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

Introduction à ORACLE WAREHOUSE BUILDER Cédric du Mouza

Bases de Données Avancées

Sybase Adaptive Server Enterprise 15

Génération de code SQL avec le SQL

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Introduction à l'etl et application avec Oracle

Secteur Tertiaire Informatique Filière étude - développement. Accueil. Apprentissage. Période en entreprise. Evaluation.

Performances. Gestion des serveurs (2/2) Clustering. Grid Computing

Plan de formation : Certification OCA Oracle 11g. Les administrateurs de base de données (DBA) Oracle gèrent les systèmes informatiques

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

Bases de données. Mihaela Mathieu

SQL Server 2000, Analysis Services et DTS

Attaques applicatives

Systèmes de Gestion de Bases de Données

1/ Présentation de SQL Server :

Du 10 Fév. au 14 Mars 2014

Exploiter les statistiques d utilisation de SQL Server 2008 R2 Reporting Services

Transcription:

Université Paris XIII Institut Galilée Master 2-EID BENSI Ahmed CHARIFOU Evelyne Devoir Data WareHouse Optimisation, Transformation et Mise à jour utilisées par un ETL Mr R. NEFOUSSI Année 2007-2008

FICHE A Objectifs : Le Data WareHouse gère des données volumineuses Exercice 1 : Préparation de l environnement 1. Le script correspondant à la création et à l alimentation des tables est disponible à l adresse suivante : http:abensi.free.frdwhfiche_a.sql 2. Ajout pour chacune des tables au moins une ligne. INSERT INTO CLIENT (CD_PAYS, ID_APPLI, ID_FINANC, ID_CLT,CD_STATUT, DER_NUM_CTL, ID_DER_DEMAND, NOTE_CLIENT, POURCENT_PERTE) VALUES ('DE','01','fin1','ctl1','C', ' ','1',60,10); INSERT INTO CLIENT (CD_PAYS, ID_APPLI, ID_FINANC, ID_CLT,CD_STATUT, DER_NUM_CTL, ID_DER_DEMAND, NOTE_CLIENT, POURCENT_PERTE) VALUES ('DE','01','fin1','ctl1','C', ' ','1',63,15); INSERT INTO CLIENT (CD_PAYS, ID_APPLI, ID_FINANC, ID_CLT,CD_STATUT, DER_NUM_CTL, ID_DER_DEMAND, NOTE_CLIENT, POURCENT_PERTE) VALUES ('FR','01','fin2','ctl1','C', ' ','1',50,20); INSERT INTO FINANCEMENT (CD_PAYS, ID_APPLI, ID_FINANC, ID_DEMANDE, ID_ACCEPTATION, DT_DEBUT_PRELEV, DT_COMPTABLE, MNT_TOTAL_FINANC, ID_RESP_SAISIE_CTR, DTD_PRELEV_PREVUE, DT_CREAT_FINANC) VALUES ('DE','01','fin1','dem1','accep1','27122002','sysdate',20000,'id2000',TO_DATE('10052007 00:00:00', 'MMDDYYYY HH24:MI:SS'), TO_DATE('04032007 00:00:00', 'MMDDYYYY HH24:MI:SS')); INSERT INTO DETAIL_FINANC (CD_PAYS, ID_APPLI, ID_FINANC, ID_CAR, ID_PROMO, TX_PROMO, MNT_TOTAL_FINANC, NBRE_MOIS, TY_PAIEMENT, MNT_MOIS, CD_PRELEV, DT_CREAT) VALUES ('DE', '01', 'fin1', 'car1', 'pr2', 12, 20000, 36, 'P', 555.55, 'P', TO_DATE('09042006 00:00:00', 'MMDDYYYY HH24:MI:SS')); COMMIT; 3. Liste des financements des Clients dont le CD_PA= DE ordonnée par CD_PAYS, ID_APPLI, ID_FINANC. SELECT * FROM CLIENT C, FINANCEMENT F, DETAIL_FINANC D WHERE F.ID_FINANC=C.ID_FINANC AND D.ID_FINANC=C.ID_FINANC AND C.CD_PAYS='DE' ORDER BY C.CD_PAYS, C.ID_APPLI, F.ID_FINANC; M2EID TP_DWH : Fiche A 14

Exercice 2 : Gestion des doublons dans la table «CLIENT» 1. Génération des doublons DECLARE ind NUMBER; begin for ind in 1..5 loop INSERT INTO CLIENT (CD_PAYS, ID_APPLI, ID_FINANC, ID_CLT,CD_STATUT, DER_NUM_CTL, ID_DER_DEMAND, NOTE_CLIENT, POURCENT_PERTE) VALUES ('FR','01','fin1','ctl1','C', ' ','1',50,20); INSERT INTO CLIENT (CD_PAYS, ID_APPLI, ID_FINANC, ID_CLT,CD_STATUT, DER_NUM_CTL, ID_DER_DEMAND, NOTE_CLIENT, POURCENT_PERTE) VALUES ('FR','01','fin2','ctl1','C', ' ','2',52,15); INSERT INTO CLIENT (CD_PAYS, ID_APPLI, ID_FINANC, ID_CLT,CD_STATUT, DER_NUM_CTL, ID_DER_DEMAND, NOTE_CLIENT, POURCENT_PERTE) VALUES ('DE','01','fin1','ctl1','C', ' ','1',60,10); end loop; end; commit; 2. Suppression de tous les doublons : * pour CD_PAYS='FR' * delete from client where (CD_PAYS, ID_APPLI, ID_FINANC, ID_CLT,CD_STATUT, DER_NUM_CTL, ID_DER_DEMAND, NOTE_CLIENT, POURCENT_PERTE) IN( select CD_PAYS, ID_APPLI, ID_FINANC, ID_CLT,CD_STATUT, DER_NUM_CTL, ID_DER_DEMAND, NOTE_CLIENT, POURCENT_PERTE from client where CD_PAYS = 'FR' group by CD_PAYS, ID_APPLI, ID_FINANC, ID_CLT,CD_STATUT, DER_NUM_CTL, ID_DER_DEMAND, NOTE_CLIENT, POURCENT_PERTE having count(*)>1); M2EID TP_DWH : Fiche A 24

* Garder 1 des doublons pour CD_PAYS='DE' * delete from client where ROWID not in(select maxi from( select max(rowid) maxi, CD_PAYS, ID_APPLI, ID_FINANC, ID_CLT,CD_STATUT, DER_NUM_CTL, ID_DER_DEMAND, NOTE_CLIENT, POURCENT_PERTE from client tabrne where CD_PAYS='DE' and (CD_PAYS, ID_APPLI, ID_FINANC, ID_CLT,CD_STATUT, DER_NUM_CTL, ID_DER_DEMAND, NOTE_CLIENT, POURCENT_PERTE) in( select CD_PAYS, ID_APPLI, ID_FINANC, ID_CLT,CD_STATUT, DER_NUM_CTL, ID_DER_DEMAND, NOTE_CLIENT, POURCENT_PERTE from client where (CD_PAYS, ID_APPLI, ID_FINANC, ID_CLT,CD_STATUT, DER_NUM_CTL, ID_DER_DEMAND, NOTE_CLIENT, POURCENT_PERTE) in( select CD_PAYS, ID_APPLI, ID_FINANC, ID_CLT,CD_STATUT, DER_NUM_CTL, ID_DER_DEMAND, NOTE_CLIENT, POURCENT_PERTE from ( select CD_PAYS, ID_APPLI, ID_FINANC, ID_CLT,CD_STATUT, DER_NUM_CTL, ID_DER_DEMAND, NOTE_CLIENT, POURCENT_PERTE, count(*) from client where CD_PAYS = 'DE' group by CD_PAYS, ID_APPLI, ID_FINANC, ID_CLT,CD_STATUT, DER_NUM_CTL, ID_DER_DEMAND, NOTE_CLIENT, POURCENT_PERTE having count(*)>1) res) ) group by CD_PAYS, ID_APPLI, ID_FINANC, ID_CLT,CD_STATUT, DER_NUM_CTL, ID_DER_DEMAND, NOTE_CLIENT, POURCENT_PERTE ) ) AND (CD_PAYS, ID_APPLI, ID_FINANC, ID_CLT,CD_STATUT, DER_NUM_CTL, ID_DER_DEMAND, NOTE_CLIENT, POURCENT_PERTE) IN (select CD_PAYS, ID_APPLI, ID_FINANC, ID_CLT,CD_STATUT, DER_NUM_CTL, ID_DER_DEMAND, NOTE_CLIENT, POURCENT_PERTE from client where CD_PAYS = 'DE' group by CD_PAYS, ID_APPLI, ID_FINANC, ID_CLT,CD_STATUT, DER_NUM_CTL, ID_DER_DEMAND, NOTE_CLIENT, POURCENT_PERTE having count(*)>1); M2EID TP_DWH : Fiche A 34

Exercice 3 : Gestion des dattes nulle dans la table «FINANCEMENT» 1. Insertion de plusieurs lignes dont 'DT_COMPTABLE' à nulle. select CD_PAYS,ID_APPLI,ID_FINANC from FINANCEMENT where DT_COMPTABLE is null order by CD_PAYS,ID_APPLI,ID_FINANC ; 2. Lignes dont la 'DT_COMPTABLE' est nulle ordonner par CD_PAYS,ID_APPLI, ID_FINANC. select CD_PAYS,ID_APPLI,ID_FINANC from FINANCEMENT where DT_COMPTABLE is null order by CD_PAYS,ID_APPLI,ID_FINANC ; 3. Remplacer la date 'DT_COMPTABLE' par la date du jour est nulle ordonné par CD_PAYS,ID_APPLI,ID_FINANC. select CD_PAYS, ID_APPLI, ID_FINANC, ID_DEMANDE, ID_ACCEPTATION, DT_DEBUT_PRELEV,decode(DT_COMPTABLE,null,sysdate),MNT_TOTAL_FINANC, ID_RESP_SAISIE_CTR,DTD_PRELEV_PREVUE, DT_CREAT_FINANC from FINANCEMENT where DT_COMPTABLE is null order by CD_PAYS,ID_APPLI,ID_FINANC ; M2EID TP_DWH : Fiche A 44

FICHE B Objectifs : Extraction des données pour un chargement dans un DWH Exercice 1 : Schéma relationnel de la BD Ecole Le script correspondant à la création et à l alimentation des tables est disponible à l adresse suivante : http:abensi.free.frdwhbd_ecole.sql Exercice 2 : Utilisation de l utilitaire EXP Exportation de toutes les tables d un schéma : exp M2EID08_07evelyne file=tables.txt Vérification, juste un aperçu : Prêt à exporter les objets M2EID08_07.... export des liens de base de données (DATABASE LINKS). export des numéros de séquence. export des définitions de cluster. Prêt à exporter les tables M2EID08_07... via le chemin classique..... export de la table ACTIVITES 7 lignes exportées <.. export de la table ACTIVITES_PRATIQUEES 22 lignes exportées <.. export de la table AGGLOMERATION 5 lignes exportées <.. export de la table ARTICLES 10000 lignes exportées <.. export de la table CHARGE 13 lignes exportées <.. export de la table CLIENT 5000 lignes exportées < EXP-00091: Export de statistiques constestables... export de la table CLIENT_BYLIST.. export de la partition NORD 1999 lignes exportées <.. export de la partition SUD 2001 lignes exportées <.. export de la partition REST 1000 lignes exportées < EXP-00091: Export de statistiques constestables. EXP-00091: Export de statistiques constestables... export de la table CLIENTS 100 lignes exportées <.. export de la table COMMANDES 1000 lignes exportées <.. export de la table COURS 5 lignes exportées <.. export de la table DETAILCOM 2552 lignes exportées <.. export de la table DW_COURS 0 lignes exportées <.. export de la table DW_ELEVES 0 lignes exportées <.. export de la table DWH_COURS 0 lignes exportées <.. export de la table DWH_ELEVES 0 lignes exportées <.. export de la table DWH_PROFESSEURS 0 lignes exportées <.. export de la table DW_PROFESSEURS 0 lignes exportées <.. export de la table ELEVES 10 lignes exportées <.. export de la table EST_CHARGE_DE 0 lignes exportées <.. export de la table ETUDIE_A 0 lignes exportées < M2EID TP_DWH : Fiche B 13

Exportation des tables ELEVES, PROFESSEURS, ACTIVITES : exp M2EID08_07evelyne file=tables.dmp tables=eleves,professeurs,activites Vérification : Connecté à : Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production With the Partitioning, OLAP and Data Mining options Export fait dans le jeu de car WE8ISO8859P15 et jeu de car NCHAR AL16UTF16 le serveur utilise le jeu de caractères WE8ISO8859P1 (conversion possible) Prêt à exporter les tables spécifiées... via le chemin classique..... export de la table ELEVES 10 lignes exportées <.. export de la table PROFESSEURS 8 lignes exportées <.. export de la table ACTIVITES 7 lignes exportées < Procédure d'export terminée avec succès sans avertissements. Exercice 3 : Utilisation du spooler Extraction des données des tables COURS, RESULTATS, CHARGES : spool tables.txt select num_cours ';' nom ';' nbheures ';' annee from cours; select num_eleve ';' num_cours ';' points from resultats; select num_prof ';' num_cours from charge; column num_cours format A10 column nom format A20 spool off Vérification en consultant le fichier tables.txt : NUM_COURS ';' NOM ';' NBHEURES ';' ANNEE --------------------------------------------------------------------- 1;Réseau;15;1 2;Sgbd;30;1 3;Programmation;15;1 4;Sgbd;30;2 5;Analyse;60;2 Exercice 4 : Utilisation de PLSQL Extraction des données de la table PROFESSEURS, qui enseignent sql : M2EID TP_DWH : Fiche B 23

set serveroutput on size 450000 set feedback off set termout off spool professeurs_sql.txt DECLARE CURSOR C1 IS SELECT * from PROFESSEURS where specialite='sql'; enreg_c1 c1%rowtype; BEGIN DBMS_OUTPUT.put_line('NUM_PROF NOM SPECIALITE DATE_ENTREE DER_PROM SALAIRE_BASE SALAIRE_ACTUEL'); OPEN C1; LOOP FETCH C1 into enreg_c1; exit when c1%notfound; DBMS_OUTPUT.put_line(enreg_c1.num_prof ';' enreg_c1.nom ';' enreg_c1.specialite ';' enreg_c1.date_entree ';' enreg_c1.der_prom ';' enreg_c1.salaire_base ';' enreg_c1.salaire_actuel); END LOOP; CLOSE C1; exception when others then null; END; Exit spool off Vérification en consultant le fichier professeurs_sql.txt : NUM_PROF NOM SPECIALITE DATE_ENTREE DER_PROM SALAIRE_BASE SALAIRE_ACTUEL 4;Pastecnov;sql;011075;;2500000;2500000 5;Selector;sql;151082;011088;1900000;1900000 8;Pucette;sql;061288;290296;2000000;2500000 M2EID TP_DWH : Fiche B 33

FICHE C Objectifs : Curseur pour extraction et transformations des données Exercice 1 : schéma relationnel de la BD Ecole Le script correspondant à la création et à l alimentation des tables est disponible à l adresse suivante : http:abensi.free.frdwhbd_ecole.sql Exercice 2 : Création des tables Copie de la structure des tables Professeurs, Cours et Eleves : create table dwh_professeurs as select * from professeurs where 1=2; create table dwh_eleves as select * from eleves where 1=2; create table dwh_cours as select * from cours where 1=2; Modification des colonnes des tables dw_* de type date : alter table dwh_professeurs modify date_entree varchar2(8); alter table dwh_professeurs modify der_prom varchar2(8); alter table dwh_eleves modify date_naissance varchar2(8); Vérification : SQL> desc dwh_eleves Nom NULL? Type ----------------------------------------- -------- ---------------------------- NUM_ELEVE NOT NULL NUMBER(4) NOM NOT NULL VARCHAR2(25) PRENOM NOT NULL VARCHAR2(25) DATE_NAISSANCE VARCHAR2(8) POIDS NUMBER ANNEE NUMBER Exercice 3 : Utilisation de PLSQL pour l extraction et la transformation des données M2EID TP_DWH : Fiche C 13

Il faut remplacer 'yyyymmaa' par yyyymmdd pour le format de la date. Procédure pour alimenter la table dwh_professeurs : CREATE OR REPLACE PROCEDURE proc_alimprof IS CURSOR cur_1 IS SELECT * from PROFESSEURS; enreg_cur_1 cur_1%rowtype; BEGIN OPEN cur_1; LOOP FETCH cur_1 into enreg_cur_1; exit when cur_1%notfound; insert into DWH_PROFESSEURS ( num_prof, nom, specialite, date_entree, der_prom, salaire_base, salaire_actuel ) values ( enreg_cur_1.num_prof, enreg_cur_1.nom, enreg_cur_1.specialite, to_char ( enreg_cur_1.date_entree, yyyymmdd ), to_char ( enreg_cur_1.der_prom, yyyymmdd ), enreg_cur_1.salaire_base, enreg_cur_1.salaire_actuel ); END LOOP; CLOSE cur_1; exception when others then null; END; Procédure pour alimenter la table dwh_eleves CREATE OR REPLACE PROCEDURE proc_alimeleves IS CURSOR cur_2 IS SELECT * from ELEVES; enreg_cur_2 cur_2%rowtype; BEGIN OPEN cur_2; LOOP FETCH cur_2 into enreg_cur_2; exit when cur_2%notfound; insert into DWH_ELEVES ( num_eleve, nom, prenom, date_naissance, poids, annee ) values ( enreg_cur_2.num_eleve, enreg_cur_2.nom, enreg_cur_2.prenom, to_char (enreg_cur_2.date_naissance, yyyymmdd ), enreg_cur_2.poids, enreg_cur_2.annee ); END LOOP; CLOSE cur_2; exception when others then null; END; Procédure pour alimenter la table dwh_cours : CREATE OR REPLACE PROCEDURE proc_alimcours IS CURSOR cur_3 IS SELECT * from COURS; enreg_cur_3 cur_3%rowtype; BEGIN OPEN cur_3; LOOP M2EID TP_DWH : Fiche C 23

FETCH cur_3 into enreg_cur_3; exit when cur_3%notfound; insert into DWH_COURS ( num_cours, nom, nbheures, annee ) values ( enreg_cur_3.num_cours, enreg_cur_3.nom, enreg_cur_3.nbheures, enreg_cur_3.annee ); END LOOP; CLOSE cur_3; exception when others then null; END; Exécution des procédures et validation : SQL> Exec proc_alimprof ; Procédure PLSQL terminée avec succès. SQL> Exec proc_alimeleves ; Procédure PLSQL terminée avec succès. SQL> Exec proc_alimcours ; Procédure PLSQL terminée avec succès. SQL> Commit ; Validation effectuée. M2EID TP_DWH : Fiche C 33

FICHE D Objectifs : Chargement des données d un DWH Exercice 1 : schéma relationnel de la BD Ecole Le script correspondant à la création et à l alimentation des tables est disponible à l adresse suivante : http:abensi.free.frdwhbd_ecole.sql Exercice 2 : Utilisation de la sqlldr pour le chargement des tables Exportation des tables: exp M2EID08_07tiger TABLES=(ELEVES,PROFESSEURS,COURS) FILE = tp_etl_fiche_d.dmp LOG = tp_etl_fiche_d.log exp : commande d export nomlogin TABLES : tables a exporter FILE : fichier de sortie (qui contient les tables) LOG : trace de la transaction Vérification : SQL> select count(*) from professeurs; COUNT(*) ---------- 8 SQL> select count(*) from cours; COUNT(*) ---------- 5 SQL> select count(*) from eleves; COUNT(*) ---------- 10 Fichier tp_etl_fiche_d.log : Connecté à : Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production With the Partitioning, OLAP and Data Mining options Export fait dans le jeu de car WE8ISO8859P15 et jeu de car NCHAR AL16UTF16 le serveur utilise le jeu de caractères WE8ISO8859P1 (conversion possible) Prêt à exporter les tables spécifiées... via le chemin classique..... export de la table ELEVES 10 lignes exportées <.. export de la table PROFESSEURS 8 lignes exportées <.. export de la table COURS 5 lignes exportées < Procédure d'export terminée avec succès sans avertissements. M2EID TP_DWH : Fiche D 14

Effacement des tables: Delete from PROFESSEURS ; Delete from COURS ; Delete from ELEVES ; Chargement des tables : sqlldr CONTROL=etl1.clt, LOG=tp_etl.log, USERID=M2EID08_07evelyne, ERRORS=999, LOAD=2000, DISCARDMAX=5 CONTROL: nom fichier de contrôle LOG : Fichier d'informations sur le chargement. USERID : nom utilisateur + passwd. ERRORS : Nombre d'erreurs d'insertion. LOAD : Nombre maximum d'enregistrements. DISCARDMAX : Maximum de lignes rejetable Fichier etl1.ctl : LOAD DATA INFILE 'tp_etl_fiche_d.txt' TRUNCATE INTO TABLE ELEVES FIELDS TERMINATED BY ';' ( ) NUM_ELEVE, NOM, PRENOM, DATE_NAISSANCE, POIDS, ANNEE INTO TABLE COURS FIELDS TERMINATED BY ';' ( NUM_COURS, NOM, NBHEURES, ANNEE ) INTO TABLE PROFESSEURS FIELDS TERMINATED BY ';' ( NUM_PROF, NOM, SPECIALITE, DATE_ENTREE, DER_PROM, SALAIRE_BASE, SALAIRE_ACTUEL ) M2EID TP_DWH : Fiche D 24

EXERCICE 3 : Utilisation de l utilitaire IMP pour charger les tables Suppression des tables : Drop table PROFESSEURS ; Drop table COURS ; Drop table ELEVES ; Le fichier tp_etl_fiche_d.txt contient également la structure des tables. Chargement des tables avec l utilitaire IMP imp M2EID08_07evelyne file=tp_etl_fiche_d.txt tables=(eleves,professeurs,cours) Vérification: Fichier d'export créé par EXPORT:V10.01.00 via le chemin classique import effectué dans le jeu de caractères WE8ISO8859P15 et le jeu NCHAR AL16UTF16 le serveur d'import utilise le jeu de caractères WE8ISO8859P1 (conversion possible). Import d'objets M2EID08_07 dans M2EID08_07.. Import de la table "ELEVES" 10 lignes importées <.. Import de la table "PROFESSEURS" 8 lignes importées <.. Import de la table "COURS" 5 lignes importées < Fin de l'import réussie avec avertissements. EXERCICE 4 : Utilisation de PLSQL pour charger les tables Creation des tables : create table dw_professeurs as select * from professeurs ; create table dw_eleves as select * from eleves ; create table dw_cours as select * from cours ; Effacement des tables : delete from PROFESSEURS ; delete from COURS ; delete from ELEVES ; Chargement des tables à l aide de 3 procédures : CREATE OR REPLACE PROCEDURE proc_alimprof IS CURSOR cur_1 IS SELECT * from DW_PROFESSEURS; enreg_cur_1 cur_1%rowtype; BEGIN OPEN cur_1; LOOP FETCH cur_1 into enreg_cur_1; exit when cur_1%notfound; insert into PROFESSEURS ( num_prof, nom, specialite, date_entree, der_prom, salaire_base, salaire_actuel ) values ( enreg_cur_1.num_prof, enreg_cur_1.nom, enreg_cur_1.specialite, enreg_cur_1.date_entree, enreg_cur_1.der_prom, enreg_cur_1.salaire_base, enreg_cur_1.salaire_actuel); END LOOP; CLOSE cur_1; exception when others then null; END; CREATE OR REPLACE PROCEDURE proc_alimeleves IS CURSOR cur_2 IS SELECT * from DW_ELEVES; M2EID TP_DWH : Fiche D 34

enreg_cur_2 cur_2%rowtype; BEGIN OPEN cur_2; LOOP FETCH cur_2 into enreg_cur_2; exit when cur_2%notfound; insert into ELEVES ( num_eleve, nom, prenom, date_naissance, poids, annee ) values ( enreg_cur_2.num_eleve, enreg_cur_2.nom, enreg_cur_2.prenom, enreg_cur_2.date_naissance, enreg_cur_2.poids, enreg_cur_2.annee); END LOOP; CLOSE cur_2; exception when others then null; END; CREATE OR REPLACE PROCEDURE proc_alimcours IS DECLARE CURSOR cur_3 IS SELECT * from DW_COURS; enreg_cur_3 cur_3%rowtype; BEGIN OPEN cur_3; LOOP FETCH cur_3 into enreg_cur_3; exit when cur_3%notfound; insert into COURS ( num_cours, nom, nbheures, annee ) values ( enreg_cur_3.num_cours, enreg_cur_3.nom, enreg_cur_3.nbheures, enreg_cur_3.annee ); END LOOP; CLOSE cur_3; exception when others then null; END; Exécution des procédures et validation : SQL> Exec proc_alimprof ; Procédure PLSQL terminée avec succès. SQL> Exec proc_alimeleves ; Procédure PLSQL terminée avec succès. SQL> Exec proc_alimcours ; Procédure PLSQL terminée avec succès. SQL> Commit ; Validation effectuée. M2EID TP_DWH : Fiche D 44