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

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

Marsh Posté le 25-09-2007 à 14:21:02    

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
Reply

Marsh Posté le 25-09-2007 à 14:21:02   

Reply

Marsh Posté le 25-09-2007 à 14:22:58    

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

Reply

Marsh Posté le 25-09-2007 à 14:26:24    

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.

Reply

Marsh Posté le 25-09-2007 à 14:31:25    

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 )

Reply

Marsh Posté le 25-09-2007 à 14:37:19    

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.

Reply

Marsh Posté le 25-09-2007 à 14:38:05    

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

Reply

Marsh Posté le 25-09-2007 à 14:38:47    

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
Reply

Marsh Posté le 25-09-2007 à 14:41:15    

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

Reply

Marsh Posté le 25-09-2007 à 14:43:12    

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 ....

Reply

Marsh Posté le 25-09-2007 à 14:43:36    

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?

Reply

Marsh Posté le 25-09-2007 à 14:43:36   

Reply

Marsh Posté le 25-09-2007 à 14:45:04    

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

Reply

Marsh Posté le 25-09-2007 à 14:49:02    

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
Reply

Marsh Posté le 25-09-2007 à 14:50:28    

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

Reply

Marsh Posté le 25-09-2007 à 14:54:17    

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.

Reply

Marsh Posté le 25-09-2007 à 14:55:05    

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
Reply

Marsh Posté le 25-09-2007 à 14:55:52    

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

Reply

Marsh Posté le 25-09-2007 à 14:56:14    

sabbahh a écrit :

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


et moi je violerai ton chien  [:twixy]

Reply

Marsh Posté le 25-09-2007 à 14:56:31    

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.

Reply

Marsh Posté le 25-09-2007 à 15:02:41    

flo850 a écrit :


et moi je violerai ton chien  [:twixy]


J'ai pas de chien heureusement..

Reply

Marsh Posté le 25-09-2007 à 15:04:39    

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 :(?

Reply

Marsh Posté le 25-09-2007 à 15:17:25    

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=

Reply

Marsh Posté le 25-09-2007 à 15:48:09    

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..??

Reply

Marsh Posté le 25-09-2007 à 16:50:22    

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
Reply

Marsh Posté le 26-09-2007 à 10:01:43    

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

Reply

Marsh Posté le 26-09-2007 à 10:57:08    

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

Reply

Marsh Posté le 26-09-2007 à 11:36:57    

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
Reply

Marsh Posté le 26-09-2007 à 11:51:14    

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)

Reply

Marsh Posté le 26-09-2007 à 11:53:32    

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.

Reply

Marsh Posté le 26-09-2007 à 13:32:53    

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ù??

Reply

Marsh Posté le 26-09-2007 à 13:44:28    

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:

Reply

Marsh Posté le 26-09-2007 à 14:03:49    

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"

Reply

Marsh Posté le 26-09-2007 à 14:07:56    

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

Reply

Marsh Posté le 26-09-2007 à 14:10:57    

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

Reply

Marsh Posté le 27-09-2007 à 11:53:01    

problème reglé ;) merci à tous

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed