IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration MySQL Discussion :

Developper une Base MySQL a partir de fichier *.csv


Sujet :

Administration MySQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2012
    Messages : 93
    Points : 29
    Points
    29
    Par défaut Developper une Base MySQL a partir de fichier *.csv
    Bonjour,

    voilà je suis actuellement en stage en entreprise et j'ai pour mission d’implémenter un serveur Windows 2003 avec une base de données MySQL , jusque la tout va bien
    la base de données je dois la développer à partir de fichier *.csv, je joins un extrait de fichier, je l'ai mis en format ods car le csv n'est pas supporté ici (il y a au maximun 87 600 lignes sur un fichier, une mesure toute les 6 minutes multiplié par 12 stations)

    J'ai quelques impératifs :
    Les données devront pouvoir être remonté tout les mois à partir de ces fichiers.
    Apparitions des heures UTC dans une colonne spécifique.
    Faire apparaître les lignes manquantes dans les relevés, il manque des lignes pour des raisons de panne ou de maintenance.

    Voilà ce que j'ai fait :

    j'ai remonté les données *.csv dans 6 tables distinct (une par année).
    Création d'une table Stations
    Création d'une table Capteurs
    Création de 6 tables Calendrier (une par année)

    La table Stations comporte 3 colonnes : id_station (clef primaire), Departement et localisation.

    La table Capteurs comporte 16 colonnes : id_capteur (clef primaire) et les 15 autres qui servent à décrire le capteur.

    Les Tables Calendrier comportent 5 colonnes : id_calendrier (clef primaire), id_station, date_heure_locale, date_heure_UTC et commentaires.

    Enfin les données que j'ai remonté sont dans une table ayant 85 colonnes : id_station, date_heure_locale et les 83 colonnes qui restent vont de 0 à 82 pour chaque capteurs.
    La clef primaire est faite de 2 colonnes (id_station et date_heure_locale).

    Au début je pensais fusionner les tables calendrier avec les tables données des années correspondantes, mais je me suis dis que ça risquer de rendre plus compliqué la remonté des données par la suite.
    Du coup j'ai pensé aux clefs étrangères, je voudrais prendre pour clef étrangère les 2 colonnes « id_station et date_heure_locale » sur les tables calendrier et données.
    La question qu'on m'a posé est la suivante : « sera-t-il possible d'extraire une table ou seront présente les colonnes date_heure_locale et date_heure_UTC et est ce que les lignes manquantes sur la table données seront visible ?
    Actuellement je travail sur la requête capable de m'afficher tout ça à partir des 2 tables en question sur une période donnée.

    Je suis novice sur MySQL, il y a encore 3 semaines de ça je ne connaissais rien aux bases de données et encore moins a MySQL.
    Merci de me donner votre avis sur ce que j'ai fait et de me dire ce que je peux améliorer, voir changer pour améliorer ma base.

    nrpfc
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    salut,

    tes tables calendrier sont les tables de données? car ton explication se contredit un peu là dessus?
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  3. #3
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Je ne reviens pas sur l'ensemble de la modélisation.

    Cependant, la table calendrier n'a pas à contenir d'information sur les serveurs.
    La table calendrier n'est pas alimentée par les batch remontant les infos des capteurs, elle est créée une fois pour toute (à la maintenance près) et contient directement 10, 20 ou 50 ans, ainsi que des infos sur les mois, années, semaines, jours fériés ou autres en fonction des besoins.
    Il n'y a pas d'intérêt à avoir une table calendrier par année.

    Concernant le choix du SGBD, comme tu es en début de projet, et que le projet semble plus particulièrement orienté reporting développé manuellement en SQL, je pense que le choix de mysql n'est pas adapté, postgresql sera nettement meilleur offrant de nombreuses fonctionnalités SQL de requêtage que n'offre pas mysql (ex et pas des moindres les fonctions de fenêtrage)

    Pour ce genre de projet, il sera également intéressant de regarder du côté du partitionnement de table (peut être pas tout de suite mais très probablement d'ici quelques années).
    Postgresql semble également être plus abouti dans ce domaine que mysql.

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par skuatamad
    Je ne reviens pas sur l'ensemble de la modélisation.
    Tu devrais !
    Tu n'es même pas choqué par ça ?
    Citation Envoyé par nrpfc
    et les 83 colonnes qui restent vont de 0 à 82 pour chaque capteurs
    Citation Envoyé par skuatamad
    je pense que le choix de mysql n'est pas adapté, postgresql sera nettement meilleur
    Citation Envoyé par nrpfc
    implémenter un serveur Windows 2003 avec une base de données
    Puisqu'on est dans le monde Windows, on peut aussi suggérer Microsoft SQL Server Express. Voir si sa limitation en taille de BDD est acceptable pour ce projet.

    Mais avant toute chose, j'inciterais fortement nrpfc à proposer et discuter de son modèle de données dans le forum Schéma.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2012
    Messages : 93
    Points : 29
    Points
    29
    Par défaut
    Merci pour vos réponses,

    Je n'ai malheureusement pas le choix quant a la plateforme, c'est MySQL^^

    la table données est faite à partir des fichiers *.csv, les données arrivent sous cette forme, soit id_station(12), date_heure_locale(toute les 6mn) et de 0 à 82 (les 83 capteurs)
    comme je vous l'ai dit je fait mon possible pour faire quelques choses de fonctionnel avec mes maigres competences dans le domaine ^^

    si j'ai créée la table calendrier c'etait dans le but d'avoir un point de comparaison avec la table données et pouvoir connaitre les date_heure manquantes ...
    j'en ai creer une par annee pour pouvoir la lier plus facilement avec une clef etrangere a la table données.

    pour info une table calendrier contient 1 051 200 lignes, mes tables données en contiennent entre 825 000 et 975 000, je vous laisse imaginer les trous ^^

    je vais de ce pas sur le forum schéma ^^
    merci pour votre aide

  6. #6
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Tu devrais !
    Tu n'es même pas choqué par ça ?
    Je ne dis pas que c'est bon, je dis que je ne l'aborde pas, car pas le temps ou pas la motivation (je n'ai pas regardé le fichier)
    Après 80 colonnes ça ne veut pas forcément dire mauvaise modélisation surtout en décisionnel, il y a le forum modélisation pour çà.

    Pourquoi pas une version express effectivement, mais s'il y a déjà quelques années de données à intégrées, je pense que le 1Go de RAM dispo sera vite dépassé.
    Par contre c'est vrai que postgresql est plus généralement utlisé sur linux.

  7. #7
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    les 80 colonnes, il a pas forcément le choix, s'il a 80 capteurs, après faut voir s'il y a besoin d'une simultanéité de mesure ou pas...

    par contre ce qui me gène c'est plus l'histoire des table calendrier/données????
    on sait pas si c'est l'un ou l'autre...

    pour les partitions... si la masse de données est importante déjà ça vaut le coup... mais dans ce cas il vaut mieux s'y mettre dés le départ vu que ça joue sur le besoin d'index et si tu dois scinder physiquement ou non tes donnée...
    en plus tu dois vérifier que la version de mysql utilisée le permet...

    pour les dates en local/utc, tu as des conversions, pas besoin de stocker les 2...

    bref il serait peut-être bien de remettre un peut les choses à plat avant de se lancer
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2012
    Messages : 93
    Points : 29
    Points
    29
    Par défaut
    merci pour toute vos réponse je suis actuellement entrain de repenser ma base avec l'aide du forum schéma.

    je met resolu meme si ce n'est pas vraiment le cas, commençons par le debut, je reviendrait surement vers vous quand j'aurais bien pensé ma base.

    nrpfc

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 03/09/2012, 10h56
  2. Restaurer une base mysql a partir de fichier .frm
    Par bigbo26 dans le forum Administration
    Réponses: 3
    Dernier message: 07/10/2011, 16h53
  3. Réponses: 11
    Dernier message: 24/01/2011, 20h03
  4. restaurer une base de donnée à partir des fichiers mdf et ldf
    Par funboard dans le forum Réplications
    Réponses: 2
    Dernier message: 26/04/2009, 11h08
  5. alimentation d'une base de données à partir de fichiers textes
    Par hb2ee dans le forum Persistance des données
    Réponses: 9
    Dernier message: 26/03/2009, 13h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo