Page 1 sur 1

Mettre à jour une base de données via un export EXCEL

Posté : 09 déc. 2008, 15:43
par dread
Bonjour à tous!!

Je me tourne vers vous pour avoir des conseils quant à ma reflexion sur un processus de mise à jours d'informations d'une table d'une bdd via un export d'un fichier EXCEL.

D'un côté j'ai un logiciel de caisse sur lequel je vais réaliser un export des références d'articles et leurs stocks en fichier EXCEL.
De l'autre j'ai une boutique en ligne.
Le but de la manipulation est de mettre à jour les stocks des produits présents en ligne sur le site en se basant sur les infos stocks du logiciel.

Pour info, je ne peux exporter mes infos que via excel (xml indisponible). Le site est sur un serveur mutualisé. J'utilise PHP 5 et bdd mysql.

Au niveau de ma réflexion, voici les étapes que j'avais imaginé:
1- Export des données depuis le logiciel de caisse via un fichier excel. (juste les réf article et leur stock) =>action manuelle
2- Convertir le EXCEL en CSV (est-ce obligatoire? peut-on le faire automatiquement hors action depuis le logiciel?) => action manuelle ou automatique
3- Rappatrier le fichier obtenu sur le serveur. => action manuelle
4- Traiter les infos fournies pour mettre à jour la base (là, c'est un peu flou pour moi, j'auais besoin d'infos et conseils)

Est-ce la bonne méthodologie? Je cherche des infos pour traiter les fichiers CSV afin de mettre à jour les stocks de ma bdd.

Merci par avance pour toute aide apportée.

Re: Mettre à jour une base de données via un export EXCEL

Posté : 09 déc. 2008, 16:07
par Yosh
C'est tout à fait cela qu'il te faut faire.

1/ export en CSV
2/ traitement du fichier CSV pour import dans la BDD (un petit fopen et un explode sur le point virgule et le tour es joué).

Posté : 09 déc. 2008, 20:25
par AB
Tu peux aussi te documenter sur les fonctions fgetcsv() et fputcsv() et http://dev.mysql.com/doc/refman/5.0/fr/load-data.html

Posté : 10 déc. 2008, 12:13
par dread
Bonjour et merci pour vos réponses.

Je reviens sur l'utilisation de LOAD DATA INFILE. Je pense avoir compris l'intérêt de la méthode.

Maintenant, j'ai quelques questions:
--> Les données envoyées sur le csv doivent elles correspondre à la taille de la table de réception, ie si sur mon csv je n'envoi que la référence article et un stock, soit 2 données, puis-je utiliser LOAD DATA INFILE pour mettre à jour une table composée de 15 champs dont la référence article et le stock ??
--> je suis sur un serveur mutualisé dont le temps d'exécution des scripts est limité. Pourrais-t'il y avoir un problème?
--> juste pour vérifier, l'action LOAD DATA INFILE peut-elle être exécutée via une page php dans l'interface d'administration du site ou est-ce uniquement utilisable via l'interface mysql de la bdd?

Merci encore pour vos conseils.

Posté : 12 déc. 2008, 10:56
par dread
J'ai eu de nouvelles infos concernant le format de fichier issu de l'export du logiciel de caisse et il semblerait que je puisse aussi l'avoir en ".txt".
Comparé à l'action EXCEL puis CSV, quelle méthode vous semble la plus interessante? Traiter du csv ou du txt?

Posté : 12 déc. 2008, 12:17
par Ripat
Tout dépend du format de ton fichier texte. Du type de champ (longueur fixe?) et de séparateur éventuel. Tu as un exemple de fichier?

Posté : 12 déc. 2008, 12:28
par dread
non je n'ai pas d'exemple.
Mais concrètement, au niveau des infos qui seront contenues, ca se limite, par article, à :
--> une référence composée uniquement de chiffre (entre 1 et 6);
--> le nombre d'article en stock, soit un nombre entre 0 et 999 par exemple.

Posté : 12 déc. 2008, 12:50
par Calimero
Si tu as le choix entre du CSV produit par excel et du TXT produit par un (et un seul) logiciel tiers, j'opterais pour le TXT.

Expérience perso : Excel existe en de multiples versions (et sous plusieurs plates-formes), parfois au sein de la même entreprise, et chaque version a ses particularités dans l'écriture de fichier CSV. Et il est probable que ces versions (ou que le poste qui réalisera l'export) change dans le temps (au gré des changements d'organisation dans l'entreprise, des mises à jour logicielles et matérielles, etc...). Donc si ton autre source de données est plus homogène, c'est vers celle-là qu'il faut t'orienter de préférence. A voir bien sûr selon le formatage du fichier TXT, qui en toute logique ne doit pas être très différent d'un CSV.

Posté : 12 déc. 2008, 13:59
par Ripat
non je n'ai pas d'exemple.
Mais concrètement, au niveau des infos qui seront contenues, ca se limite, par article, à :
--> une référence composée uniquement de chiffre (entre 1 et 6);
--> le nombre d'article en stock, soit un nombre entre 0 et 999 par exemple.
Dans ce cas, puisqu'il ne semble pas y avoir de champ contenant des espaces, tu peux même te contenter d'un fichier dont les colonnes sont séparées par des espaces. Ou tout autre séparateur bien sûr que tu préciseras lors de l'importation en donnant une valeur à l'option FIELDS TERMINATED BY du LOAD DATA INFILE.