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

  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu] utiliser une table tempo pour lire un fichier .xls

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] utiliser une table tempo pour lire un fichier .xls

n°1615063
sabbahh
Posté le 25-09-2007 à 14:21:02  profilanswer
 

Bonjour à tous,
 
Dans un tableau où j'affiche des champs texte ou numérique à remplir par l'utilisateur par mois (encours et 2 mois suivant).
Si le mois échu, je "delete" les enregistrements correspondants de ma bdd et je les enregistre dans un fichier excel "qui sert d'archivage".
Maintenant, dans une autre partie de mon programme, je dois récupérer ces enregistrements (du mois M-1, M-2, .., M-n).
Donc je voudrais savoir si il y a moyen d'ouvrir ce fichier .xls et de l'enregister dans une table temporaire?


Message édité par sabbahh le 28-04-2008 à 12:09:20
mood
Publicité
Posté le 25-09-2007 à 14:21:02  profilanswer
 

n°1615066
flo850
moi je
Posté le 25-09-2007 à 14:22:58  profilanswer
 

tu aurai plutot interet a le faire lors de la sauvegarde du xls  : tu ecris les données dans une base de données

n°1615068
sabbahh
Posté le 25-09-2007 à 14:26:24  profilanswer
 

ce n'est pas viable comme solution non? biensur ça m'arragerait si j'enregistre tous les enregistrements dans une table existante et fixe dans ma bdd, mais il y e tellement de données que par mois, qu'il est impossible de ne pas les supprimer après.

n°1615075
flo850
moi je
Posté le 25-09-2007 à 14:31:25  profilanswer
 

trop gros pour être mis en bdd , mais stockable dans des fichiers excel ?  
 
tu as quel volume ? ( pour te donner un exemple , c'est une base MySQL qui gère tous les messages de ce forum )

n°1615083
sabbahh
Posté le 25-09-2007 à 14:37:19  profilanswer
 

Voire 2000 enregistrements par mois et par personne, j'ai un groupe de 20 personnes
Pr le fichier .xls je crée des fichiers par mois.

n°1615085
weed
Posté le 25-09-2007 à 14:38:05  profilanswer
 

pour info, une table peut stocker dans les 200 millions de lignes sans problème ....

n°1615087
anapajari
s/travail/glanding on hfr/gs;
Posté le 25-09-2007 à 14:38:47  profilanswer
 

sabbahh a écrit :

Voire 2000 enregistrements par mois et par personne, j'ai un groupe de 20 personnes
Pr le fichier .xls je crée des fichiers par mois.


+10 avec flo, c'est une volumétrie ridicule qui sera parfaitement tolérée par mysql ( même avec un serveur toupouri)
edit

weed a écrit :

pour info, une table peut stocker dans les 200 millions de lignes sans problème ....


le stockage n'est jamais un problème, l'utilisation des données oui.
En l'occurence pour que mysql ( ou tout autre sgbd) s'en sorte correctement sur des grosses tables, quelques problèmes vont se poser ( création d'index toussa toussa).
Mais sabbahh, tu n'es vraiment pas dans ce cas la:o

Message cité 1 fois
Message édité par anapajari le 25-09-2007 à 14:40:14
n°1615090
weed
Posté le 25-09-2007 à 14:41:15  profilanswer
 

donc tu as 40 000 enregistrements par mois ...
 
Ca te laisse de la marge en 5 ans, tu auras 200 000 d'enregistrements. :D

n°1615092
weed
Posté le 25-09-2007 à 14:43:12  profilanswer
 

anapajari a écrit :


+10 avec flo, c'est une volumétrie ridicule qui sera parfaitement tolérée par mysql ( même avec un serveur toupouri)
edit


 

anapajari a écrit :


le stockage n'est jamais un problème, l'utilisation des données oui.
En l'occurence pour que mysql ( ou tout autre sgbd) s'en sorte correctement sur des grosses tables, quelques problèmes vont se poser ( création d'index toussa toussa).
Mais sabbahh, tu n'es vraiment pas dans ce cas la:o


On croit toujours MySQL = toute petite base. J'infirme.  
Tu as raison, il faut dans ce cas optimiser. Bien placer ses index, bien choisir les types de champs, eclater la tables en plusieurs si besoin ....

n°1615093
sabbahh
Posté le 25-09-2007 à 14:43:36  profilanswer
 

c'est quoi ce prob d'index? moi aussi j'ulise un index dans ma table.. il faut le déclarer comment pour éviter tous genrs de prob?

mood
Publicité
Posté le 25-09-2007 à 14:43:36  profilanswer
 

n°1615094
flo850
moi je
Posté le 25-09-2007 à 14:45:04  profilanswer
 

juste pour ce forum  

Citation :

 
Nombre total de messages : 45 074 939
Membres Enregistrés : 575435
Lien vers la carte des membres

 
sachant que les messages sont des champs relativement lourd

n°1615099
sabbahh
Posté le 25-09-2007 à 14:49:02  profilanswer
 

mais il y a pas un back up tous les ans, ou quelque choses de ce genre?
parceque ces infos (les miennes) doivent être consultées à tout moment, je veux dire il y a pas rique que ça soit lourd ou je sais pas moi? :s


Message édité par sabbahh le 25-09-2007 à 14:49:19
n°1615100
flo850
moi je
Posté le 25-09-2007 à 14:50:28  profilanswer
 

nan, aucun risque  
 

Citation :

Affichage des enregistrements 0 - 29 (191 370 total, traitement: 0.0018 sec.)
requête SQL: SELECT *
FROM `vacation`
LIMIT 0 , 30


 
testé a l'instant :d
 
et avec les requetes que j'ai pu faire, je suis toujours en dessous des 0.5secondes

n°1615101
weed
Posté le 25-09-2007 à 14:54:17  profilanswer
 

flo, tu travailles avec marc ?
 
 sabbahh > bien sur, il faut faire des backup régulier (en planifiant automatiquement) avec la commande mysqldump ou un truc dans le genre régulièrement en cas de pb avec la base.

n°1615102
sabbahh
Posté le 25-09-2007 à 14:55:05  profilanswer
 

si ça merde un jour, je vous tuerai ;)  
Je vais peut être faire ça, avec la validation de mon chef, par contre je garderai qd même l'archivage en .xls par mois, on sait jamais..

Message cité 1 fois
Message édité par sabbahh le 25-09-2007 à 14:55:44
n°1615105
flo850
moi je
Posté le 25-09-2007 à 14:55:52  profilanswer
 

weed a écrit :

flo, tu travailles avec marc ?


nan, les chiffres sur le nombre de post et d'user sont diispo en bas de la page d'accueil du forum  
 
la requete que j'ai fait en dessous provient d'une de mes table

n°1615106
flo850
moi je
Posté le 25-09-2007 à 14:56:14  profilanswer
 

sabbahh a écrit :

si ça merde un jour, je vous tuerai ;)  


et moi je violerai ton chien  [:twixy]

n°1615107
weed
Posté le 25-09-2007 à 14:56:31  profilanswer
 

nop pour faire propre, tu fais des back régulier de la base. En cas de souci, tu pourras redéployer.  
 
Rien ne t'empeche de conserveur les fichier excel aussi.

n°1615111
sabbahh
Posté le 25-09-2007 à 15:02:41  profilanswer
 

flo850 a écrit :


et moi je violerai ton chien  [:twixy]


J'ai pas de chien heureusement..

n°1615112
sabbahh
Posté le 25-09-2007 à 15:04:39  profilanswer
 

weed a écrit :

nop pour faire propre, tu fais des back régulier de la base. En cas de souci, tu pourras redéployer.  
 
Rien ne t'empeche de conserveur les fichier excel aussi.


 
Régulier càd, à quelle fréquence? et pour les Back, faut que j'utilise la "fonction" Backup en sql :(?

n°1615120
weed
Posté le 25-09-2007 à 15:17:25  profilanswer
 

tous les jours ou tous les 2-3 jours en taches planifié.  
Tu as la commande mysql dump  
http://www.google.fr/search?client [...] che+Google
 
si tu n'a pas acces à cette commande, tu as aussi : load data outfile
http://www.google.fr/search?hl=fr& [...] cher&meta=

n°1615134
sabbahh
Posté le 25-09-2007 à 15:48:09  profilanswer
 

weed a écrit :

tous les jours ou tous les 2-3 jours en taches planifié.  
Tu as la commande mysql dump  
http://www.google.fr/search?client [...] che+Google
 
si tu n'a pas acces à cette commande, tu as aussi : load data outfile
http://www.google.fr/search?hl=fr& [...] cher&meta=


 
donc ok mnt je connais la sythaxe de mysql dump, pour automatiser le back, je dois utiliser une tâche planifier de windows, vu que mon "prog" va être utilisé en intranet. donc peux tu m'éclaircir la dessus? je dois mettre mon instruction avec le dump dans un fic .php puis l'insérer dans la tâche planifiée en preécisant l'heure..??

n°1615178
weed
Posté le 25-09-2007 à 16:50:22  profilanswer
 

euhh, non le mysql dump est une commande qui s'execute en ligne de commande comme commande mysql donc plutot dans un fichier shell bash (ou peut etre dans le pire des cas batch)  
regarde cette exemple :
http://www.journaldunet.com/develo [...] dump.shtml
 
Tu parles d'intranet, donc tu dois avoir accès au serveur. Tu devras executer cette commande mysql dump sans planifier sur ton serveur. Des fichiers seront généré. Une fois généré sur le serveur rien ne t'empeche de les déplacer sur une autre machine par exemple. Puis une fois que tu auras réussi, tu le planifiras.
 
Si ton serveur est sous Linux ca serait le top du top car tu pourras utiliser le shell bash mais malheuresement ton serveur a l'air d'etre sous Windows, je sais pas pourquoi. Je me trompe ?


Message édité par weed le 25-09-2007 à 16:51:30
n°1615373
sabbahh
Posté le 26-09-2007 à 10:01:43  profilanswer
 

Non t'as bien raison "c'est sous windows", j'utilise easyphp (serveur apache), je vais mater le lien que tu m'as donné, mais je t'avoue que "shell bach.." ne me dis pas grand chose

n°1615404
sabbahh
Posté le 26-09-2007 à 10:57:08  profilanswer
 

Weed je t'es vu, t'es en ligne, stp help :)

n°1615420
weed
Posté le 26-09-2007 à 11:36:57  profilanswer
 

lol petité curieux. Je ne passe pas tres souvent sur cette section.
 
Ce que tu vas faire, tu vas aller dans le repertoire du style (cela peut varier en fonction de la version de Easyphp) :  
C:\Program Files\EasyPHP1-7\mysql\bin
et dans ce repertoire, tu as le fameux fichier mysqldump.exe qui va te permettre de dumper/sauvegarder ta base.  
 
Cette commande ne s'execute uniquement en mode dos, dans ce cas tu  fais : Demarrer => Executer => tu tapes cmd
 
Dans l'invite Dos (la fentre noire), tu vas dans le repertoire C:\Program Files\EasyPHP1-7\mysql\bin et tu fais des tests manuels en executant mysqldump.exe avec les bons parametres (utilisateur/mot de passe et nom de la base)  
 
http://www.journaldunet.com/develo [...] dump.shtml

Message cité 2 fois
Message édité par weed le 26-09-2007 à 11:37:46
n°1615426
omega2
Posté le 26-09-2007 à 11:51:14  profilanswer
 

weed a écrit :

pour info, une table peut stocker dans les 200 millions de lignes sans problème ....


Pour info à l'heure actuelle, dans la boite où j'étais avant, ils doivent en être à plusieurs milliards de lignes dans la même table s'ils n'ont pas déporté le stockage des données les plus anciennes dans une table d'archivage. D'ailleurs, on avait même du limiter le nombre d'index pour que le serveur ne prennent pas trop de retard à l'insertion tellement on avait de données à rajouter par minute pendant les heures de pointes.
 
sabbahh > Même si les 20 personnes rajoutaient toutes les données du mois dans la même demis heure, un vieux PC arriverait à les stocker sans aucun ralentissement. Pour te donner une idée de vitesse, un ordinateur d'il y a deux trois ans aurait besoin de moins d'une minute pour stocker tout ça. En fait, tu peux considérer que mysql mettra 2 à 20 fois moins de temps à stocker les données que ton programme à créer les fichier excell (en gros 2 fois plus rapide par rapport à la création d'un fichier excell sous forme xml et en gros 20 fois plus rapide si tu fais appel à excell pour créer le fichier)

n°1615428
anapajari
s/travail/glanding on hfr/gs;
Posté le 26-09-2007 à 11:53:32  profilanswer
 

weed a écrit :


On croit toujours MySQL = toute petite base. J'infirme.  
Tu as raison, il faut dans ce cas optimiser. Bien placer ses index, bien choisir les types de champs, eclater la tables en plusieurs si besoin ....


T'infirmes l'égalité sus-citée ou mon propos?
Nan parce que j'ai vaguement l'impression qu'on dit la même chose :o
 

flo850 a écrit :

nan, aucun risque  
 

Citation :

Affichage des enregistrements 0 - 29 (191 370 total, traitement: 0.0018 sec.)
requête SQL: SELECT *
FROM `vacation`
LIMIT 0 , 30


testé a l'instant :d
et avec les requetes que j'ai pu faire, je suis toujours en dessous des 0.5secondes


c'est typiquement pas le genre de requête qui fera ramer ton sgbd dans la mesure ou il remonte toute la table sans faire d'index scan.
Pour faire de "bons" tests essaye plutot avec une jointure et des conditions sur chacune de tes tables. Un truc dans le genre:

Code :
  1. SELECT a.champs 1, b.champs 2 FROM table1 t1 LEFT OUTER JOIN table2 t2 ON t1.truc = t2.truc AND t1.machin = t2.machin WHERE t1.date BETWEEN 'current date - interval 200 day and current date


et tu verras une dramatique perte de perfomance si tu n'as pas les indexs qui vont bien.
 
Maintenant mysql est loin d'être parfait non plus, recement j'ai eu besoin de faire un select qui ne prenait pas en compte des doublons. Un truc dans le genre:

Code :
  1. select C.champs1, B.champs2
  2. from  
  3. table2  
  4. inner join ( select id, champs1, min(truc) from table1 group by id,champs1) T on T.id = table2.idTable1
  5. where [... plein de truc ...]


table1 contenant 3 millions d'enregistrement et table2 environ la moitié.
Résultat mysql créé une table temporaire dans un fichier, le dit fichier depasse un giga et mysql se viende.
la même requête sous DB2 mets 0.1 seconde :o
note: oui j'ai également essayé avec un exists ça marche pas mieux.
note2: oui, le problème vient plus de la modélisation initiale du bouzin, malheureusement on fait avec ce qu'on a.

n°1615466
sabbahh
Posté le 26-09-2007 à 13:32:53  profilanswer
 

weed a écrit :

lol petité curieux. Je ne passe pas tres souvent sur cette section.
 
Ce que tu vas faire, tu vas aller dans le repertoire du style (cela peut varier en fonction de la version de Easyphp) :  
C:\Program Files\EasyPHP1-7\mysql\bin
et dans ce repertoire, tu as le fameux fichier mysqldump.exe qui va te permettre de dumper/sauvegarder ta base.  
 
Cette commande ne s'execute uniquement en mode dos, dans ce cas tu  fais : Demarrer => Executer => tu tapes cmd
 
Dans l'invite Dos (la fentre noire), tu vas dans le repertoire C:\Program Files\EasyPHP1-7\mysql\bin et tu fais des tests manuels en executant mysqldump.exe avec les bons parametres (utilisateur/mot de passe et nom de la base)  
 
http://www.journaldunet.com/develo [...] dump.shtml


J'ai fais ce que tu m'avais dis, mnt le back je le retrouve où??

n°1615471
sabbahh
Posté le 26-09-2007 à 13:44:28  profilanswer
 

weed a écrit :

lol petité curieux. Je ne passe pas tres souvent sur cette section.
 
Ce que tu vas faire, tu vas aller dans le repertoire du style (cela peut varier en fonction de la version de Easyphp) :  
C:\Program Files\EasyPHP1-7\mysql\bin
et dans ce repertoire, tu as le fameux fichier mysqldump.exe qui va te permettre de dumper/sauvegarder ta base.  
 
Cette commande ne s'execute uniquement en mode dos, dans ce cas tu  fais : Demarrer => Executer => tu tapes cmd
 
Dans l'invite Dos (la fentre noire), tu vas dans le repertoire C:\Program Files\EasyPHP1-7\mysql\bin et tu fais des tests manuels en executant mysqldump.exe avec les bons parametres (utilisateur/mot de passe et nom de la base)  
 
http://www.journaldunet.com/develo [...] dump.shtml


ça y est j'ai trouver c bon, j'ai utilisé l'instruction suivante: mysqldump -u .. --database maDBase>backupTest.sql
donc je vais encore être "chiante" et te demander comment automatiser ce backup? genre chaque mois   :sarcastic:

n°1615479
weed
Posté le 26-09-2007 à 14:03:49  profilanswer
 

sabbahh a écrit :


J'ai fais ce que tu m'avais dis, mnt le back je le retrouve où??


 
Bon je te dis honnettement, tu as bien de la chance que je t'aide. Par contre pour mes pb de java avec jdbc. Nada  je vais continuer à galerer comme pas possible ... Enfin bon passons ...
 
Pour info, je n'ai jamais fais auparavant de dump mais j'ai juste entendu parler. Pour ce faire j'ai donc suivi les doc ....
 
 
 
Un exemple, te sera plus parlant. J'ai aussi un easyphp installé sur ma machine. Donc par défaut le user de connexion est root sans mot de passe. J'ai une base de donnée qui s'appelle java.  
 
Pour faire un back, cela donne ceci dans l'invite de commande dos
C:\Program Files\EasyPHP1-7\mysql\bin>mysqldump.exe -u root java > backup.sql
 
Le fichier est généré dans le repertoire courant, c'est à dire dans C:\Program Files\EasyPHP1-7\mysql\bin mais rien ne t'empeche de préciser le chemin complet avec un nom de fichier.  
 
 
 
Petit rapelle pour se déplacer dans un repertoire sous dos :  
exemple : cd "C:\Program Files\EasyPHP1-7\mysql\bin"

n°1615481
weed
Posté le 26-09-2007 à 14:07:56  profilanswer
 

sabbahh a écrit :


ça y est j'ai trouver c bon, j'ai utilisé l'instruction suivante: mysqldump -u .. --database maDBase>backupTest.sql
donc je vais encore être "chiante" et te demander comment automatiser ce backup? genre chaque mois   :sarcastic:


 
ouarf, j'étais en train de rediger mon post :( et tu as trouvé.
Pour automatiser, rien de plus simple. Tu creer un fichier avec l'extension .bat, tu copies/colles  par exemple :  
C:\Program Files\EasyPHP1-7\mysql\bin>mysqldump.exe -u root java > backup.sql  
et tu l'enregistre. Essaie de double cliquer sur le .bat pour tester le backup.  
 
Si c'est oki, il y a plus qu'a le planifier :  
Panneau de configuration => tache planifié => et tu selectionnes ton fichier .bat

n°1615487
sabbahh
Posté le 26-09-2007 à 14:10:57  profilanswer
 

tout ça j'ai bien réussie à le faire.. je te remercie quand même :)
j'ai réussie à faire le backup et aussi à présicer le chemin ..  
ma question été de savoir s'il ya moyen d'automatiser tout cela. t'aurais dû lire les posts après ;) je suis pas la seule impatiente dans cette section. mais dèjà un grand merci pour toi

n°1615916
sabbahh
Posté le 27-09-2007 à 11:53:01  profilanswer
 

problème reglé ;) merci à tous

mood
Publicité
Posté le   profilanswer
 


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

  [Résolu] utiliser une table tempo pour lire un fichier .xls

 

Sujets relatifs
FTP : téléchargement mais pas exécution d'un fichier[RESOLU] Probleme pour augmenter un DIV en fonction d'un autre
[RÉSOLU]pre-loading - ActionScript 3.0[Résolu] IE "error not implemented"
[Résolu] DataBinding d'un DropDownList sur un GridViewpointillés autour animation flash [RESOLU]
[RESOLU] Débutant VB - Ouvrir une image sous VB6[Résolu] CSS : Sous menu rémanent
Supprimer ligne fichier[resolu] simplexml - suppression d'elements - probleme avec unset?
Plus de sujets relatifs à : [Résolu] utiliser une table tempo pour lire un fichier .xls


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