Mini-projet bases de données / Perl



Documents pareils
Pratique et administration des systèmes

Les bases de données

Perl Console. Votre compagnon pour développer en Perl. Les Journées du Perl , 17 novembre, Lyon. Alexis Sukrieh

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

PHP 4 PARTIE : BASE DE DONNEES

Perl Orienté Objet BioPerl There is more than one way to do it

Module BD et sites WEB

Bases de données relationnelles

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

UE 8 Systèmes d information de gestion Le programme

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

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

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

Sage 100 CRM Guide de l Import Plus avec Talend Version 8. Mise à jour : 2015 version 8

Créer son questionnaire en ligne avec Google Documents

CREATION WEB DYNAMIQUE

Introduction aux SGBDR

L informatique en BCPST

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

Mercredi 15 Janvier 2014

Rappel sur les bases de données

Comment créer des rapports de test professionnels sous LabVIEW? NIDays 2002

Information utiles. webpage : Google+ : digiusto/

Exonet : sauvegarde automatisée d une base de données

Gestion de stock pour un magasin

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

Création et développement d une base de données sur le VIH

Le logiciel de création de site internet IZISPOT est un outil très puissant et qui est assez simple après quelques temps d utilisation.

THEME PROJET D ELABORATION D UNE BASE DE DONNEES SOUS LE SERVEUR MYSQL

TP 1. Prise en main du langage Python

A. Architecture du serveur Tomcat 6

Langage Perl. Introduction & Retour d'expérience. Journée du 30/11/ S. Gallina - GEPV - 1/42

OpenOffice Base Gestionnaire de Base de Données

BIRT (Business Intelligence and Reporting Tools)

1. Introduction / Identification

Utiliser le site Kahoot pour créer des quiz interactifs

Bases de données élémentaires Maude Manouvrier

Vue d ensemble de Windows PowerShell

Mysql avec EasyPhp. 1 er mars 2006

La Voix sur IP. Études des solutions logicielles. Open Source

Request Tracker pour les Nuls. Yves Agostini - YVESAGO

Dans l'article précédent, vous avez appris

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

Évaluation et implémentation des langages

Table des Matières. Pages 3-4. A propos d emblue. Page 5. L environnement emblue. Création d une campagne d marketing. Pages 6-15.

Cours iguess. inotes v10.1

Description pas à pas des différents processus d installation, configuration, saisie des résultats et export des données.

Notice d utilisation du Kiosque Famille

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Nom de l application

Utilitaires méconnus de StrataFrame

Utilisation du BDE pour la maintenance des fichiers DBF de l'application TopoCad:

S y m M a i l i n g. S o l u t i o n d e - m a i l i n g. SymMailing est un outil professionnel de création et de gestion de campagnes d ing.

Introduction à la présentation graphique avec xmgrace

HighPush. document /06/2009 Révision pour version /11/2008 Revision pour la /10/2008 Documentation initiale.

Armand PY-PATINEC 2010

Les BASES de DONNEES dans WampServer

Architectures web/bases de données

La base de données XML exist. A. Belaïd

PostgreSQL. Formations. Calendrier... 14

Présentation du module Base de données spatio-temporelles

Guide d installation de Gael

Introduction à la B.I. Avec SQL Server 2008

Java DataBaseConnectivity

Traitement des données avec Microsoft EXCEL 2010

Réussir. son site e-commerce. avecoscommerce

Les différentes méthodes pour se connecter

Attaques applicatives

GLPI OCS Inventory. 1. Prérequis Installer un serveur LAMP : apt-get install apache2 php5 libapache2-mod-php5 apt-get install mysql-server php5-mysql

Etape 1 : Identification avec un compte personnel sur la plateforme (cf. notice «Création et gestion de votre compte utilisateur»)

PostgreSQL. Formations. SQL avancé Calendrier... 18

[ GLPI et OCS pour Gentoo 2006] ArtisanMicro. Alexandre BALMES

Création et Gestion des tables

WIMS. Découvrir et utiliser

Sélection d un moteur de recherche pour intranet : Les sept points à prendre en compte

Cours Base de données relationnelles. M. Boughanem, IUP STRI

Vulnérabilités et sécurisation des applications Web

Gestion du parc informatique matériel et logiciel de l Ensicaen. Rapport de projet. Spécialité Informatique 2 e année. SAKHI Taoufik SIFAOUI Mohammed

EPREUVE PRATIQUE DES TECHNIQUES INFORMATIQUES ACTIVITE N 1. Thème de l activité : Configuration d un firewall

Utiliser SQL Server 2008 R2 Reporting Services comme source de donne es pour Microsoft Excel

Table des matières Hakim Benameurlaine 1

1 Position du problème

Création, analyse de questionnaires et d'entretiens pour Windows 2008, 7, 8 et MacOs 10

Bases de SQL. Hacks 1-6 CHAPITRE UN

Fiche aide pour votre messagerie Outlook, thunderbird, Gmail

Olivier Mondet

1. Base de données SQLite

Module Communication - Messagerie V6. Infostance. Messagerie

Chaîne opératoire de réalisation d une base de données. ANF «Comment concevoir une base de données» (29-30/01/2015)

les techniques d'extraction, les formulaires et intégration dans un site WEB

Présentation du langage et premières fonctions

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

Transcription:

Mini-projet bases de données / Perl M1 Bioinformatique 1 Présentation du sujet L objectif de ce mini-projet est de récupérer des données dans un certain format, de les insérer dans une base de données relationnelles puis d interroger cette base afin de construire plusieurs tableaux récapitulatifs. Ce travail utilisera la base de données 2014 des communes, départements et régions Françaises qui est disponible sur le site de l INSEE (http://www.insee.fr/fr/methodes/ nomenclatures/cog/telechargement.asp). Nous utiliserons les fichiers au format DBF. Les données sont structurées de la façon suivante : la France est découpée en régions, qui sont découpées en départements (qui sont eux même découpés en arrondissement, et enfin les arrondissement sont découpés en cantons). Chaque entité (région et département) possède un nom unique et un chef-lieu qui est une commune. Dans la base de données à créer, une commune n appartient qu à un seul département. En suivant la hiérarchie région-département, on doit être capable de retrouver facilement la région d appartenance d une commune. A ces données, nous ajouterons des statistiques sur les équipements et services des communes pour l enseignement supérieur en 2013. Il faut télécharger la base au niveau communal et arrondissement municipal au format XLS zippé depuis http://www.insee.fr/fr/themes/detail.asp?reg_id=99&ref_ id=equip-serv-ens-sup-form-serv. Nous utiliserons uniquement la feuille de calcul nommée COM. 2 Travail à faire 2.1 Construction de la base de données relationnelles A partir de la description donnée ci-dessus, vous devez modéliser une base de données en troisième forme normale avec un maximum de contraintes d intégrité. Vous devez rédiger un document qui présente un modèle entités-associations et un modèle relationnel qui décrivent votre base de données le plus précisément possible. Une fois la base de données modélisées, vous devez l implémenter dans le serveur PostgreSQL. 1

A l aide d un ou plusieurs scripts PERL, vous devez remplir automatiquement la base de données à partir des fichiers téléchargés sur le site de l INSEE. 2.2 Exploitation de la base de données A partir de la base de données, l objectif est de construire un rapport de synthèse (par exemple sous la forme de tableaux) en HTML (vous pouvez faire plusieurs fichiers). Ce rapport est constitué d une partie générale et d une partie détaillée en fonction d une liste d éléments passée en paramètre au script Perl de construction du fichier HTML. Tous les opérateurs mathématiques nécessaires sont déjà implémentés dans la base de données PostgreSQL. Dans la partie générale, il faudra pouvoir naviguer dans une arborescence qui montre pour chaque région, la liste de ses départements. A côté du nom de chaque entité (région ou département) devra apparaître : Le nom de son chef lieu Le nombre de communes de cette entitée la population en 2009 Le nombre d instituts universitaires, d unité de formation et de recherche (UFR), d écoles d ingénieurs, de résidences universitaires et de restaurants universitaires. Des statistiques nationales devront aussi être calculées : Région/département avec le plus/le moins d instituts universitaires, d UFR, d écoles d ingénieurs, de résidences universitaires et de restaurants universitaires Nombre moyen et écart-type du nombre d instituts universitaires, d UFR, d écoles d ingénieurs, de résidences universitaires et de restaurants universitaires pour chaque région et département Indiquer si il y a une corrélation linéaire entre le nombre d UFR et le nombre de restaurants universitaires (idem avec les résidences universitaires) au niveau national et pour chaque région. Les informations pour la partie détaillée seront passées en paramètre au script Perl sous la forme d un fichier structuré entite:nom. Le fichier comportera un couple d éléments par ligne. Un exemple pourrait être (les majuscules et minuscules ne sont pas forcément respectées) : commune:bordeaux region:aquitaine departement:aveyron Selon le type d entité géographique, il faudra construire un tableau récapitulatif de toutes les informations disponibles : pour une région : chef-lieu, nombre de départements, répartition en pourcentage dans chaque département des instituts universitaires, unité de formation et de recherche (UFR), écoles d ingénieurs, résidences universitaires et restaurants universitaires. 2

pour un département : chef-lieu, région d appartenance, nombre d instituts universitaires, d unité de formation et de recherche (UFR), d écoles d ingénieurs, de résidences universitaires et de restaurants universitaires. pour une commune : région, département, nombre d instituts universitaires, d unité de formation et de recherche (UFR), d écoles d ingénieurs, de résidences universitaires et de restaurants universitaires. Annexes A Ajout et compilation d un module Perl externe (sans avoir les droits root) Si un module n est pas installé, Perl dispose d un module spécifique qui est une interface sur la base de données CPAN (voir http://www.cpan.org). Cette interface est appelée avec la ligne de commande suivante : perl -MCPAN -e shell. Une fois configurée, il faut redéfinir quelques variables afin de pouvoir installer les modules convenablement. Avec la commande o conf (l aide est accessible avec?), il faut définir make_install_arg à INSTALLMAN3DIR=/net/cremi/votre_username/perl/man3/ et makepl_arg à PREFIX=/net/cremi/votre_username/perl/lib Donc pour changer makepl_arg, il faudra utiliser : o conf makepl_arg PREFIX=/net/cremi/votre_username/perl/lib Ensuite, comme le précise la commande, n oubliez pas de taper o conf commit pour enregistrer vos modifications de façon permanente. Si l installation d un module échoue car il manque certaines dépendances, il faudra définir avant le lancement de CPAN la variable d environnement PERL5LIB afin d indiquer à Perl où se trouve les modules à charger (5.14.2 est la version courante de Perl. A vérifier avec perl -v). En effet, les dépendances seront installées dans le même répertoire que les modules supplémentaires sachant que ce répertoire ne fait pas partie des chemins de recherche de perl par défaut. export PERL5LIB=\ /net/cremi/votre_username/perl/lib/share/perl/5.14.2/\ :$PERL5LIB N oubliez pas de remplacer votre_username par votre nom d utilisateur. Avant de pouvoir utiliser les nouveaux modules, il faut indiquer à l interpréteur Perl où les trouver. Vous pouvez soit utiliser la variable PERL5LIB définie précédemment (et ne pas oublier de modifier les scripts de lancement de votre interpréteur de commande pour éviter d avoir à tout retaper à chaque fois) ou utiliser le pragma lib ajouté au début de vos scripts : 3

#! /usr/bin/perl use warnings; use lib "/net/cremi/votre_username/perl/lib/share/perl/5.14.2/ ;... B Structure d un fichier DBF Un fichier DBF (DBASE) peut-être vu comme une relation dans un modèle relationnel. Ce fichier peut être lu par tout tableur digne de ce nom. La première ligne de chaque colonne est toujours au format nom, type, longueur : le champ nom indique le nom de l attribut, le type indique le type de données de la colonne (par ex. c pour un caractère) et la longueur donne la taille maximale du champ. Par exemple, une colonne d en-tête VILLE, c, 70 représente un attribut qui s appelle VILLE de type caractère et de longueur maximale 70. C Lecture des fichiers DBF et XLS avec Perl Plusieurs moyens sont disponibles pour lire des fichiers DBF et XLS. Nous utiliserons le pilote DBD::XBase du module DBI qui permet d utiliser les fichiers DBF comme une base de données. Chaque fichier DBF est ainsi vu comme une table. L interrogation des fichiers s effectue à l aide du langage SQL. Pour les fichier XLS, nous utiliserons Spreadsheet::ParseExcel. D Utilisation des modules Perl Pour chaque module décrit ici, il existe beaucoup de documentations plus ou moins obsolètes sur Internet. N oubliez pas que Google est votre ami! D.1 Utilisation basique du pilote DBD::XBase #!/usr/bin/perl use DBI; my $dbh = DBI->connect("DBI:XBase:.") or die $DBI::errstr; my $sth = $dbh->prepare("select NCC from reg2011") or die $dbh->errstr(); $sth->execute() or die $sth->errstr(); while (my @data = $sth->fetchrow_array()) { print "$data[0]\n"; 4

$sth->finish(); Chaque fichier DBF situé dans le répertoire courant (le point après DBI:XBase:) est considéré comme une table (ne pas mettre l extension.dbf). D.2 Utilisation basique du pilote DBD::Pg Soit une relation test(a, b) où a et b sont des entiers. #!/usr/bin/perl use DBI; # connect my $dbh = DBI->connect("DBI:Pg: dbname=bpinaud;host=dbserver", "bpinaud", "", { RaiseError => 1); # execute INSERT query my $rows = $dbh->do("insert INTO test VALUES (5,3)"); print "$rows row(s) affected\n"; # execute SELECT query my $sth = $dbh->prepare("select * FROM test"); my $num = $sth->execute(); print query returned $num rows\n ; # iterate through resultset while(my $ref = $sth->fetchrow_hashref()) { print "$ref->{ a $ref->{ b \n"; $sth->finish; $dbh->disconnect(); D.3 Utilisation basique du module Spreadsheet::ParseExcel #!/usr/bin/perl use warnings; use Spreadsheet::ParseExcel; my $parser = Spreadsheet::ParseExcel->new(); #may take some time my $workbook = $parser->parse( equip-serv-ens-sup-form-serv-com-11.xls ); if (!defined $workbook ) { die $parser->error(), ".\n"; my $worksheet; foreach ( $workbook->worksheets() ) { 5

$worksheet = $_; last if $_->get_name() eq COM ; my ( $row_min, $row_max ) = $worksheet->row_range(); my ( $col_min, $col_max ) = $worksheet->col_range(); for my $row ( 6.. $row_max ) { for my $col ( $col_min.. $col_max ) { my $cell = $worksheet->get_cell( $row, $col ); next unless $cell; print "Row, Col = ($row, $col)\n"; print "Value = ", $cell->value(), "\n"; print "Unformatted = ", $cell->unformatted(), "\n"; print "\n"; 6