|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 2 ![]() |
Bonjour,
Je me décide à demander un petit coup de main. Je vous explique le problème : J'ai réalisé un site e-commerce (utilisant prestashop). Je dois à présent, et pour finaliser ce site, importer les produits et les mettre à jour de façon automatique (1 fois par jour), avec les données issues d'une base de données Access (utilisées pour gérer les produits dans la boutique physique). Et pour faciliter la chose, cette base n'a pas la même structure que la base Mysql. Ayant fouillé un peu sur Google, je me suis dit faire un lien ODBC. Mon soucis, c'est que mon hébergeur (1and1) sur lequel est hébergé la eboutique et la base de données Mysql, ne permet pas de connexion extérieur à cette base de données. J'ai tourné le problème dans tous les sens, et ai un peu du mal à trouver une solution. J'aurais tendance à dire qu'il me faut : -Faire un duplicata de la base mysql distante, en local sur la machine possédant la base de donnée Access. -Installer un lien ODBC entre ces 2 bases. -Faire une requête de récupération des champs adéquats sous Access et exporter les résultats sous forme de tables. -Exporter ces table vers le lien odbc. -Exporter la base de données Mysql (locale) sous forme d'un fichier .sql -Envoyer ce fichier sur le ftp de la boutique -Faire un script (sans doute php) qui mette à jour les tables Mysql en ligne. Je m'excuse d'avance si certaines choses sont floues. Je n'ai pas beaucoup de connaissances en Access et odbc. Est-ce que mon schéma semble correct ? Si oui comment le faire ? (car je n'ai jamais fait) Quel genre de script ferait la mise à jour ? Et si ce n'est pas correct, quelle serait la solution ? Merci d'avance pour votre aide. Bonne soirée |
|
|
00
|
|
|
#2 |
![]() ![]() |
Il y a peut-être un peu plus simple :
- Exporter les données d'Access sous forme de fichier texte délimité .csv - Envoyer le fichier sur le serveur. - Utiliser une procédure SQL ou PHP que tu auras programmée qui importera les données dans la BDD MySQL dans les bonnes tables.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
10
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2010 Messages : 40 ![]() |
Je suis aussi intéressé, surtout par la solution de Cinephil
mais aurais tu un exemple de procedure sql qui importerai le fichier CSV ? et moi j ai aussi une autre contrainte il faut qu au moin une fois par jour on puisse recuperer les nouvelles commande et clients depuis le site comment faire ? merci |
|
|
00
|
|
|
#4 |
![]() ![]() |
Pour importer un fichier csv ou tout autre format de fichier texte délimité, il faut utiliser l'instruction LOAD DATA INFILE. Ça importe les données dans une table, à considérer comme une table temporaire juste pour l'importation, sauf si les données importées sont à charger tel quel dans une table structurée de la BDD. Il suffit ensuite de faire les bonnes requêtes sur la table pour répartir les données comme il faut dans les bonnes tables de la BDD. Et ça peut se programmer par exemple en PHP, ou en procédure SQL directement dans MySQL.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : janvier 2011 Messages : 2 ![]() |
Merci Cinephil
|
|
|
00
|
|
|
#6 | |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2010 Messages : 40 ![]() |
Cinephil,
j essai mais meme en suivant le lien pour load data file, je n y arrive pas Citation:
2 - le fichier test.csv se trouve sur un autre disque (E:\TEMP\test.csv) que dois je mettre 3 - comment importer les images de chaque produit dans la table, car la on peux les mettre dans un fichier csv merci |
|
|
|
00
|
|
|
#7 | |||
![]() ![]() |
Citation:
Je viens de le faire pour importer un fichier INSEE contenant toutes les communes de France. Citation:
Attention aux chemins Windows avec les anti-slashes, je crois qu'il faut les doubler ou même les quadrupler, je crois qu'il y a un mot la dessus dans la doc mais n'étant pas concerné vu que j'ai abandonné le monde de Bill depuis longtemps... Citation:
![]() Il faut stocker en BDD le nom du fichier, éventuellement avec son chemin d'accès et laisser les fichiers image en dehors de la BDD.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|||
|
00
|
|
|
#8 |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2010 Messages : 40 ![]() |
Merci pour tes réponses
juste pour le point 3, je ne voulais pas les stocker dans la bbd, mais bien passer les fichiers, mais justement, comment les envoyer en meme temps que le csv, car le but est que ce soit tous les jours a une heure donnée, et en automatique envoyer le csv et les images mais avec quoi faire ca, car evidement ca se trouve sur le web merci |
|
|
00
|
|
|
#9 |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2010 Messages : 40 ![]() |
Comment automatiser ca tous les jours à heure fixe
|
|
|
00
|
|
|
#10 | |
![]() ![]() |
Citation:
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
|
00
|
|
|
#11 |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2010 Messages : 40 ![]() |
Ne peut-on dire à Mysql d'exécuter cette requête tous les jours à heure fixe ?
Php, hélas, je ne connais pas grand chose. merci de ton aide |
|
|
00
|
|
|
#12 |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2010 Messages : 40 ![]() |
J ai trouvé chez mon hebergeur comment lancer une tache planifiee sur MySQL
mais si je lance ca Code :
LOAD DATA INFILE 'test.csv' INTO TABLE TEST FIELDS TERMINATED BY ';' Merci |
|
|
00
|
|
|
#13 | ||||||
![]() ![]() |
Dans le message #4, j'explique que le fichier csv est à importer dans une table vide à considérer comme temporaire !
Ensuite tu alimentes les vraies tables avec des requêtes, justement pour éviter les doublons ! Imaginons que tu doives importer une liste csv contenant des données sur le trafic généré par l'utilisateur de plusieurs applications. Le fichier csv pourrait avoir cette structure : date_heure, login, action, application La table qui accueillera le fichier csv aura la même structure. Ensuite dans ta BDD structurée, tu as par exemple les tables suivantes : utilisateur (uti_id, uti_login...) application (app_id, app_nom...) uti_utiliser_app (uua_id_utilisateur, uua_id_application, uua_date, uua_action) S'il y a de nouveaux utilisateurs à ajouter à la table utilisateur, tu fais cet enchaînement de requêtes, MySQL refusant de tester la table en cours de mise à jour : Code :
Code :
Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||||||
|
00
|
|
|
#14 |
|
Futur Membre du Club
![]() Inscription : mai 2004 Messages : 37 ![]() |
Pour l'import des fichiers images, tu peux installer un serveur FTP (FileZilla Server) sur ton poste local (celui qui contient Access), et tu y accèdes depuis ton hébergement 1&1 : les fonctions FTP de PHP permettent de tout gérer. J'imagine que la liste de tes fichiers peut être déterminé par ta base access, que tu as précédemment importée dans mysql. J'ai mis ça en place pour la synchro d'une base d'articles sous sql server vers mysql, et ça fonctionne bien, mis en tache cron toutes les nuits. Bon courage !
|
|
|
00
|
|
|
#15 |
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 839 ![]() |
Oui mais quitte à, autan tout faire en gérant ça dans un script php qui te fait tout et tourne en cron. C'est plus simple et tu peux lier plus facilement les ressources externes à la bd comme ça (images, etc...)
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com