Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Shop Recherche
1897 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  Automatisation de bases de données

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Automatisation de bases de données

n°2299438
jen00
Posté le 20-04-2017 à 09:22:22  profilanswer
 

Bonjour,
 
Mon projet est de traiter différents fichiers Excel. Pour cela, j’aimerais créer un seul fichier contenant certaines données des fichiers précédents. Tout ceci afin d’avoir ma base de données. Le but est ainsi par la suite d’obtenir des graphiques issus de ces données et de pouvoir les diffuser. Après de nombreuses recherches sur internet (PHP,Python,.. ?), je ne trouve pas la meilleure méthode a utilisé. Un peu d’aide serait la bienvenue.
 
Cordialement.

mood
Publicité
Posté le 20-04-2017 à 09:22:22  profilanswer
 

n°2299450
rufo
Pas me confondre avec Lycos!
Posté le 20-04-2017 à 15:55:19  profilanswer
 

C'est un peu vague, ce que tu veux faire.
Soit il y a besoin des manipuler les donnes via une IHM (lecture/ajout/MAJ/suppr) auquel cas, une appli web avec une BD genre MySql ou Postgres et du PHP pour le côté serveur et du HTML/CSS/JS pour l'iHM côté client (navigateur web) fera l'affaire.
Soit tu as juste des traitements de type stats/agrégations/extracts à effectuer, auquel cas un outil de type ETL conviendrait (Pentaho, par ex).
 
Edit : ETL = Extract, Transform and Load


Message édité par rufo le 20-04-2017 à 15:55:44

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2299457
Profil sup​primé
Posté le 20-04-2017 à 17:49:58  answer
 

Bonjour,
 
Peut-être que ça vous intéressera.
C'est la page sur sourceforge du projet Excel Writter : http://excel-writer.sourceforge.net/
J'écris avec Ada.

n°2299458
torwood3
Posté le 20-04-2017 à 17:57:57  profilanswer
 

Si tu es dans le cas de plusieurs fichiers qui arrives de façon régulière, une fois par jour par exemple, regarde les solutions proposé par Rufo.
 
Si c'est simplement manipuler en one shot plusieurs fichiers pour les fusionner, il n'y a pas forcement de solution meilleure qu'une autre.
Un script Python fera certainement l'affaire.
 
Si tu es dans le second cas peux-tu expliquer ce qu'il y a dans les excels ? que des valeurs ? du texte ? plusieurs onglets ?  
Et que veux tu comme fichiers finale ?
 
Tor


---------------
"La valeur d'un homme tient dans sa capacité à donner et non dans sa capacité à recevoir." Albert Einstein / "Dans la nature, tout a toujours une raison. Si tu comprends cette raison, tu n'as plus besoin de l'expérience." Léonard De Vinci
n°2299461
rufo
Pas me confondre avec Lycos!
Posté le 20-04-2017 à 19:27:40  profilanswer
 

Après, il reste toujours ue solution à base d'une macro Excel en VBA, voire, si besoin d'un peu plus de manips, d'une combinaison d'un script/exe en AutoIt + une macro en VBA.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2299464
jen00
Posté le 20-04-2017 à 21:06:10  profilanswer
 

Au final on veut une application web donc je pense que la première solution de rufo est celle qui faut. Vaut-il mieux utiliser PHP ou Python?  :)
 
Les données changent une fois par an. Elles sont composées pour chaque fichier de chiffres relatives à des communes et on doit sélectionner seulement celles d'un certain département.


Message édité par jen00 le 20-04-2017 à 21:09:32
n°2299469
rufo
Pas me confondre avec Lycos!
Posté le 20-04-2017 à 22:56:18  profilanswer
 

Le dév d'une appli web est peut-être surdimensionné si c'est pour faire un traitement par an :??:
Est-ce qu'il y aurait moyen d'avoir une vue d'ensemble du besoin ? Nb d'utilisateurs, nb de traitements à faire et leur fréquence, volumétrie des données. Car là, j'aurais plutôt tendance à proposer du Pentaho voire un simple petit script php de manipulation de données.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2299476
jen00
Posté le 21-04-2017 à 07:28:45  profilanswer
 

Cela vise près de 500 utilisateurs, il y a des milliers de données. Le fichier final sera composé de près de 800 variables pour 500 lignes de données


Message édité par jen00 le 21-04-2017 à 09:14:44
n°2299480
rufo
Pas me confondre avec Lycos!
Posté le 21-04-2017 à 10:32:34  profilanswer
 

Ok, donc clairement, tu oublies Excel et il te faut un outil qui puisse importer les données dans un SGBD (Mysql, Postgres ou autre) et une IHM (web a priori, c'est le plus simple pour le déploiement sur pleins de postes utilisateurs) permettant aux utilisateurs de manipuler et effectuer les traitements.
PHP est un bon langage pour faire ça. ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2299481
jen00
Posté le 21-04-2017 à 10:34:05  profilanswer
 

Je travaille avec PostGIS. Je ne connais pas PHP mais Python, est ce réalisable avec?

mood
Publicité
Posté le 21-04-2017 à 10:34:05  profilanswer
 

n°2299485
h3bus
Troll Inside
Posté le 21-04-2017 à 11:46:36  profilanswer
 

Tout ce que tu peux faire avec PHP, tu peux le faire avec python.
 
Il faut juste paramétrer le serveur HTTP, mais c'est pas bien compliqué.


---------------
sheep++
n°2299488
jen00
Posté le 21-04-2017 à 13:31:19  profilanswer
 

Très bien merci de ton aide. Je vais commencé à programmer

n°2299493
rufo
Pas me confondre avec Lycos!
Posté le 21-04-2017 à 14:38:19  profilanswer
 

Avant de plonger dans le dév, fais un peu de conception pour préparer le terrain et avoir une archi qui tient la route. ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2299494
jen00
Posté le 21-04-2017 à 14:47:35  profilanswer
 

C'est à dire? :) Désolé je suis une novice..

n°2299496
rufo
Pas me confondre avec Lycos!
Posté le 21-04-2017 à 15:33:37  profilanswer
 

Avant de coder, il faut définir les spécifications du logiciel le plus détaillé possible (en gros, les fonctions disponibles dans le logiciel, qui y a accès, les données que les fonctions ont en entrée et ce qu'elles donnent en sortie, la structure de la BD, c'est-à-dire son MCD, et MLP...) puis faire la conception du logiciel (en gros, comment tu organises ton code, si tu es en objet, quelles sont tes classes et les méthodes de chaque classe et pour chaque méthode, ce qu'elle prend en paramètres d'entrée et ce qu'elle donne en sortie comme résultat...).
 
Seulement après ça, tu peux commencer à coder. A titre d'info, la phase de spéc/conception, c'est au moins 1/3 du temps du projet. Le code, c'est 20 à 30% du temps. Le reste est du test/validation.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2299908
jen00
Posté le 27-04-2017 à 14:35:07  profilanswer
 

J'ai essayé de programmer afin de créer la base de données mais je n'arrive pas à sortir le fichier Excel.. J'aimerais aussi le convertir en fichier CSV
 
import os
import xlrd
import xlsxwriter
from xlrd import open_workbook
 
wc = xlrd.open_workbook("S:\\...\\table-appartenance-geo-communes-16.xls" )
sheet0=wc.sheet_by_index(0)
 
# création  
bdd = xlsxwriter.Workbook('S:\\...\\Department.xlsx')
dept = bdd.add_worksheet('deprt')
 
folder_path = "S:\\...\\2013_telechargement2016"
 
constante=1
constante2=1
 
# ajout des entêtes
 
dept.write_row(0,0,sheet0.cell(5, 0).value)
dept.write(0,1,sheet0.cell(5, 4).value)
dept.write(0,2,sheet0.cell(5, 7).value)
dept.write(0,3,sheet0.cell(5, 8).value)
dept.write(0,4,sheet0.cell(5, 9).value)
dept.write(0,5,sheet0.cell(5, 12).value)
dept.write(0,6,sheet0.cell(5, 15).value)
 
# ajout des donnees
 
for ligne in range(15000,sheet0.nrows - 1):
 if sheet0.cell_value(ligne, 2) == '61':
  dept.write(constante2,0,sheet0.cell(ligne, 0).value)
  dept.write(constante2,1,sheet0.cell(ligne, 4).value)
  dept.write(constante2,2,sheet0.cell(ligne, 7).value)
  dept.write(constante2,3,sheet0.cell(ligne, 8).value)
  dept.write(constante2,4,sheet0.cell(ligne, 9).value)
  dept.write(constante2,5,sheet0.cell(ligne, 12).value)
  dept.write(constante2,6,sheet0.cell(ligne, 15).value)
  constante2=constante2+1
 
# recherche dans le dossier
 
col=7
lastCol=0
for path, dirs, files in os.walk(folder_path):
    for filename in files:
        filename = os.path.join(path, filename)  
        wb = xlrd.open_workbook(filename, '.xls')
        sheet1 = wb.sheet_by_index(0)
        lastRow=sheet1.nrows
        lastCol=sheet1.ncols
        for ligne in range(0,lastRow):
                for col2 in range(0,lastCol):
                        if sheet1.cell_value(ligne, col2) == 'DEP':
                                colDep=col2
                                firstRow=ligne
        for nCol in range(colDep+2,lastCol-1):
                print(nCol,sheet1.cell(firstRow, nCol).value)
                dept.write(0,col+nCol,sheet1.cell(firstRow, nCol).value)
        for ligne in range(0,lastRow):
                if sheet1.cell(ligne, colDep).value=='61':
                       for coll in range(col,lastCol-1):
                               dept.write(constante,coll,sheet1.cell(ligne, col).value)
                               constante=constante+1
        col=lastCol
 
bdd.close

Message cité 1 fois
Message édité par jen00 le 27-04-2017 à 14:39:36
n°2299912
h3bus
Troll Inside
Posté le 27-04-2017 à 14:47:55  profilanswer
 

jen00 a écrit :

J'ai essayé de programmer afin de créer la base de données mais je n'arrive pas à sortir le fichier Excel..


Qu'est ce qui se passe? Quel est le symptôme? Un erreur?
 

jen00 a écrit :

J'aimerais aussi le convertir en fichier CSV


Un CSV c'est pas bien compliqué:
- Chaque ligne du fichier représente un ligne
- Le cases de chaque lignes sont séparées par des virgules
 
Mais laisse ça de côté pour l'instant, un problème à la fois.


---------------
sheep++
n°2299914
jen00
Posté le 27-04-2017 à 14:55:01  profilanswer
 

h3bus a écrit :


Qu'est ce qui se passe? Quel est le symptôme? Un erreur?
 


 
Le programme se termine sans erreur mais le fichier n'apparait nul part à la fin. Au début, je suis passé par le module xlrd pour créer le fichier cela marchait il apparaissait. Mais comme le nombre de colonnes est limité à 255, j'ai dû changé. Cela ne génère plus de fichier..


Message édité par jen00 le 27-04-2017 à 14:57:12
n°2299917
h3bus
Troll Inside
Posté le 27-04-2017 à 15:13:25  profilanswer
 

Il manque des parenthèses pour bdd.close()


---------------
sheep++
n°2299921
rufo
Pas me confondre avec Lycos!
Posté le 27-04-2017 à 15:30:19  profilanswer
 

On est bien d'accord qu'un fichier Excel n'est pas une base de données (ou alors, la BD du pauvre de chez pauvre, puisque dans la suite MS Office, tu as Access qui est un début de BD) :o


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2299930
h3bus
Troll Inside
Posté le 27-04-2017 à 15:58:52  profilanswer
 

rufo a écrit :

On est bien d'accord qu'un fichier Excel n'est pas une base de données


De ce que j'ai compris il ne veut pas vraiment une BDD, mais plutôt centraliser des données éparses dans un fichier excel pour générer des graphiques.


---------------
sheep++
n°2299931
jen00
Posté le 27-04-2017 à 16:00:36  profilanswer
 

Ce que je fais là va servir à la fin pour insérer le fichier dans Postgre.
 
J'ai maintenant mon fichier merci.


Message édité par jen00 le 27-04-2017 à 16:08:19
n°2299937
rufo
Pas me confondre avec Lycos!
Posté le 27-04-2017 à 16:28:29  profilanswer
 

Ok, tu me rassures ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2299959
jen00
Posté le 28-04-2017 à 08:47:09  profilanswer
 

Comment est-il possible de réduire le temps d'exécution de mon programme (environ 5 min actuellement) ?

n°2299961
rufo
Pas me confondre avec Lycos!
Posté le 28-04-2017 à 10:30:54  profilanswer
 

Tu peux désactiver les options de recalcul automatique par ex plus 2-3 autres options du même genre.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2299969
jen00
Posté le 28-04-2017 à 13:59:21  profilanswer
 

Je ne vois pas des calculs que je puisse enlever, j'ai besoin de tous les avoir..


Message édité par jen00 le 28-04-2017 à 14:05:42
n°2299971
h3bus
Troll Inside
Posté le 28-04-2017 à 14:11:47  profilanswer
 

Pour optimiser:
- Enlève ton print
- ... ne pas travailler sur un fichier excel, malheureusement c'est très lent.


---------------
sheep++
n°2299972
jen00
Posté le 28-04-2017 à 14:15:42  profilanswer
 

h3bus a écrit :

Pour optimiser:
- Enlève ton print
- ... ne pas travailler sur un fichier excel, malheureusement c'est très lent.


 
C'est fait merci. Quelle serait la solution alors autre qu'un fichier excel?

n°2300003
rufo
Pas me confondre avec Lycos!
Posté le 28-04-2017 à 23:32:01  profilanswer
 

Une BD (dans un SGBD genre Postgres, Mysql...), comme préconisé depuis le début :o


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2300064
jen00
Posté le 02-05-2017 à 10:01:54  profilanswer
 

Afin d'optimiser, est ce qu'il est possible de commencer par scanner les lignes à partir du moment où les numéro du département commence par un 6?

n°2300065
rufo
Pas me confondre avec Lycos!
Posté le 02-05-2017 à 15:48:14  profilanswer
 

Tout est possible à faire comme traitement ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2300066
jen00
Posté le 02-05-2017 à 16:22:36  profilanswer
 

J'ai essayé mais cela rallonge mon traitement. J'ai peut être pas utilisé la bonne manière..

n°2300068
rufo
Pas me confondre avec Lycos!
Posté le 02-05-2017 à 17:45:41  profilanswer
 

C'est du Excel : y'a pas de miracle :/
T'as désactivé le recalcul auto pendant l'exécution de ta macro ?
 
Application.Calculation = xlCalculateManual
 
C'est ça l'option, il me semble.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2300070
h3bus
Troll Inside
Posté le 02-05-2017 à 17:50:15  profilanswer
 

Il fait du python, le module xlrd n'exécute pas les macro ni les formules.
 
Pour moi il y a deux solutions:
- Ne pas utiliser excel
- Utiliser le "vrai" excel et pas xlrd. Tu peux regarder du côté de win32com pour le contrôler depuis un script python. De cette manière tu pourra utiliser les fonctions haut niveau d'excel. Mais ne t'attends pas à des miracles non plus.


---------------
sheep++
n°2300094
rufo
Pas me confondre avec Lycos!
Posté le 02-05-2017 à 22:02:38  profilanswer
 

En PHP, t'as l'équivalent avec COM (OLE32).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  Automatisation de bases de données

 

Sujets relatifs
Extraction de données de logs dans un répertoire vers Excel[RESOLU] Données dans un if
Enregistrer les données contenues dans un formulaire excel (textbox) vRecolte de données
Annuler une fusion et ré-écrire les données dans les cellules videsScript d'extraction de données
Agrégateur de données orienté réseauGIT, débutant, bases, bonnes pratiques...
Transfert de données Excel WEBinterface web reliée à base de données sql
Plus de sujets relatifs à : Automatisation de bases de données


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR