Nico de Bordeaux Posted November 14, 2017 Share Posted November 14, 2017 (edited) Je suis entrain de faire un fichier csv d'importation avec phpmyadmin mes id sont sous cette forme 2,7,9,10,12...etc suite à divers suppression de produits je les voudrais en 1,2,3,4,5,6...etc donc par exemple pour produit.csv SELECT p.`id_product` AS 'Product ID', @row_number := CASE WHEN @product_no != @row_number THEN @row_number + 1 ELSE 1 END AS 'New Product ID', pl.`name` AS 'Name' FROM `ps_product` p CROSS JOIN (SELECT @product_no:= 0,@row_number:= 0) as temp LEFT JOIN `ps_product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = 2 ) GROUP BY p.`id_product` HAVING p.`id_product` IS NOT NULL ORDER BY p.`id_product` ASC Résultats prévisualisation dans phpmyadmin OK Product ID | New Product ID | Name 2 | 1 | azert 4 | 2 | yuio 6 | 3 | pqsdf 8 | 4 | ghjkl 9 | 5 | mwxcv 10 | 6 | bnaze 14 | 7 | rtyui 15 | 8 | opqsdf Exportation csv PROBLEME Product ID | New Product ID | Name 2 | 1 | azert 4 | 1 | yuio 6 | 1 | pqsdf 8 | 1 | ghjkl 9 | 1 | mwxcv 10 | 1 | bnaze 14 | 1 | rtyui 15 | 1 | opqsdf Y a t'il une astuce pour exporter les variables ?? Edited November 25, 2017 by Nico de Bordeaux (see edit history) Link to comment Share on other sites More sharing options...
Nico de Bordeaux Posted November 20, 2017 Author Share Posted November 20, 2017 ok je ne pensais pas qu'il pouvait y avoir une difference de traitement de la requete entre phpmyadmin et mysql... merci de la piste Link to comment Share on other sites More sharing options...
Nico de Bordeaux Posted November 20, 2017 Author Share Posted November 20, 2017 oui et non pour les produits c'est pas un problème... j'ai pris cet exemple par ce que facile a mettre en oeuvre mais si tu veux un truc propre avec des ids réalignés pour les combinaisons les attributs et autres... ben les variables c'est bien pratique pour écraser les anciens id. Je suis entrain de faire un petit tuto pour expliquer ma demarche je te copie le debut j'ai pas fini... mais ça te donne une idée de la demarche... donc je souhaitais faire une mise à jour prestashop 1.4.8 vers 1.7 je test avec Click Upgrade en local (faire très attention a bien modifier la table de ps_configuration on a vite fait de passer du local au site en production si on ne change pas PS_SHOP_DOMAIN) il ne propose que de migrer vers 1.6 et pas 1.7 je tente le 1.6 peut être qu'il proposera ensuite le 1.7... je suis maintenant en 1.6 mais il ne propose pas le 1.7 je regarde dans les fichiers et les bases je constate que je me traine pas mal de truc de 1.4 donc c'est pas ce que je souhaite. Ok tant pis je pars sur un 1.7 d'origine, avec l'idée de d'importer mes bases en csv via le manager sql Donc il faut effacer la boutique de démonstration de prestashop - ok cool en théorie : dans le guide de l'utilisateurhttp://doc.prestashop.com/display/PS17/Premiers+pas+avec+PrestaShop+1.7 chapitre : Effacer le contenu de la boutique par défauthttp://doc.prestashop.com/display/PS17/Premiers+pas+avec+PrestaShop+1.7#PremierspasavecPrestaShop1.7- Vous devez donc effacer toutes les données par défaut, c'est à dire : les produits et leurs... catégories attributs caractéristiques marques fournisseurs scènes tags les commandes les messages liés aux commandes les clients leurs paniers les transporteurs les tranches de prix les tranches de poids Les infos de contact et les magasins (à effacer ou à adapter aux besoins de la boutique) les pages de contenu statique (à effacer ou à adapter aux besoins de la boutique) Cela supposerait que vous ayez à parcourir les nombreux écrans du back-office et supprimer votre contenu sur chaque écran, mais il y a une méthode bien plus facile : Allez dans la page "Modules > Modules", Trouvez le module "Nettoyage de la base de données" (PrestaShop Cleaner) et cliquez sur son bouton "Installation", Vous êtes immédiatement envoyé sur sa page de configuration (si ce n'est pas le cas, cliquez sur son bouton "Configuration"), Lisez et acceptez l'avertissement, puis cliquez sur le bouton "Effacer le catalogue" : il supprimera tous vos produits et vos attributs, vos fabricants, etc. Lisez et acceptez l'avertissement, puis cliquez sur le bouton "Effacer les commandes et clients" : il supprimera toutes vos clients et leurs commandes, paniers, etc. Cliquez sur le bouton "Vérifier et corriger" pour rétablir les contraintes d'intégrité de votre base de données, Cliquez sur le bouton "Nettoyer et optimiser" pour réorganiser le stockage physique des données de vos tables et les index de données associées, afin de réduire l'espace de stockage et améliorer l'efficace de lecture/écriture lors de l'accès aux tables. VOS MODIFICATIONS SONT DÉFINITIVES. Assurez-vous de ne cliquez sur ces boutons que si vous souhaitez vraiment effacer le contenu par défaut de votre base de données. - en pratique maintenant : je cherche le module dans l'administration Modules > Modules Résultat pas de "PrestaShop Cleaner" Je regarde dans le dossier module : blockreassurance contactform dashactivity dashgoals dashproducts dashtrends followup gamification graphnvd3 gridhtml pagesnotfound ps_banner ps_categorytree ps_checkpayment ps_contactinfo ps_currencyselector ps_customeraccountlinks ps_customersignin ps_customtext ps_emailalerts ps_emailsubscription ps_facetedsearch ps_featuredproducts ps_imageslider ps_languageselector ps_legalcompliance ps_linklist ps_mainmenu ps_searchbar ps_sharebuttons ps_shoppingcart ps_socialfollow ps_wirepayment referralprogram sekeywords statsbestcategories statsbestcustomers statsbestmanufacturers statsbestproducts statsbestsuppliers statsbestvouchers statscarrier statscatalog statscheckup statsdata statsequipment statsforecast statslive statsnewsletter statsorigin statspersonalinfos statsproduct statsregistrations statssales statssearch statsstock statsvisits welcome pas de module non plus je verifie dans presta 1.7.1 - 1.7.2 - 1.7.3 - 1.7.4 rien... donc comme le dis la notice en premier je commence à la main en parcourant le menu de l'administration mais je ne peux pas supprimer les commandes du client John DOE ... mais faute de les supprimer je les annule. donc forum je vois que deux solutions : 1-use data import via .csv 2-https://github.com/PrestaShop/pscleaner ne voyant aucune données officiels entre github.com/PrestaShop/pscleaner et prestashop j'abandonne je pars donc sur l'import de l'administration de l'administration de prestashop je crée mes fichiers .csv Link to comment Share on other sites More sharing options...
Nico de Bordeaux Posted November 20, 2017 Author Share Posted November 20, 2017 après la galère du manque d'info sur la 1.7, à l'usage en test, la 1.7 est plutôt réussi ... Pourquoi ps_cleaner n'est plus dans les archives ? 1 click upgrade me laisse trop vieux code, je préfère passer sur du neuf a cause de la loi de Murphy Link to comment Share on other sites More sharing options...
Nico de Bordeaux Posted November 21, 2017 Author Share Posted November 21, 2017 /* je n'arrive pas a trouver la bonne syntaxe ou mon erreur dans wampserveur wampserveurlocal_3.1.0 -> MySQL -> console MySQL -> mes tests mysql> -h localhost -u root -p 148 < C:/wamp64/www/testvariablesql/testconsole.sql > C:/wamp64/www/testvariablesql/out.csv; retourne error syntaxe 1064 (42000) blabla à la ligne 1 mysql> -h localhost -u root 148 < C:/wamp64/www/testvariablesql/testconsole.sql > C:/wamp64/www/testvariablesql/out.csv; error syntaxe 1064 (42000) blabla à la ligne 1 mysql> -h localhost -u root 148 < C:/wamp64/www/testvariablesql/testconsole.sql > C:/wamp64/www/testvariablesql/out.csv retourne -> mysql> 148 < C:/wamp64/www/testvariablesql/testconsole.sql > C:/wamp64/www/testvariablesql/out.csv; error syntaxe 1064 (42000) blabla à la ligne 1 mysql> USE 148 < C:/wamp64/www/testvariablesql/testconsole.sql > C:/wamp64/www/testvariablesql/out.csv; database changed le fichier testconsole.sql */ SELECTp.`id_product` AS 'Product ID',@row_number :=CASEWHEN @product_no != @row_number THEN @row_number + 1ELSE 1END AS 'New Product ID',pl.`name` AS 'Name'FROM `ps_product` pCROSS JOIN (SELECT @product_no:= 0,@row_number:= 0) as tempLEFT JOIN `ps_product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = 2 )GROUP BY p.`id_product`HAVING p.`id_product` IS NOT NULLORDER BY p.`id_product` ASC Link to comment Share on other sites More sharing options...
Nico de Bordeaux Posted November 21, 2017 Author Share Posted November 21, 2017 désolé je suis allé trop vite pour copier le texte de la requete... test 1 mysql> 148 < C:/wamp64/www/testvariablesql/testconsole.sql > C:/wamp64/www/testvariablesql/out.csv; ERROR 1064 (42000): Erreur de syntaxe près de '148 < C:/wamp64/www/testvariablesql/testconsole.sql > C:/wamp64/www/testvariable' à la ligne 1 test 2 mysql> -h localhost -u root 148 < C:/wamp64/www/testvariablesql/testconsole.sql > C:/wamp64/www/testvariablesql/out.csv; ERROR 1064 (42000): Erreur de syntaxe près de '-h localhost -u root 148 < C:/wamp64/www/testvariablesql/testconsole.sql > C:/wa' à la ligne 1 je pense avoir un problème de syntaxe si j'appelle ma base et que je passe la requete ça passe sauf pour l'export : test 3 mysql> USE 148 Database changed mysql> SELECT -> p.`id_product` AS 'Product ID', -> @row_number := -> CASE -> WHEN @product_no != @row_number THEN @row_number + 1 -> ELSE 1 -> END AS 'New Product ID', -> pl.`name` AS 'Name' -> FROM `ps_product` p -> CROSS JOIN (SELECT @product_no:= 0,@row_number:= 0) as temp -> LEFT JOIN `ps_product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = 2 ) -> GROUP BY p.`id_product` -> HAVING p.`id_product` IS NOT NULL -> ORDER BY p.`id_product` ASC ; +------------+----------------+---------------------------+ | Product ID | New Product ID | Name | +------------+----------------+---------------------------+ | 2 | 1 | azerty | | 4 | 2 | uiopq | | 6 | 3 | sdfghjk | | 8 | 4 | lmwxcvb | | 9 | 5 | nazer | | 10 | 6 | tyuuiop | | 11 | 7 | qsdfg | | 12 | 8 | hjklm | +------------+----------------+---------------------------+ 8 rows in set (0.02 sec) mysql> C:/wamp64/www/testvariablesql/out.csv; ERROR 1064 (42000): Erreur de syntaxe près de 'C:/wamp64/www/testvariablesql/out.csv' à la ligne 1 mysql> Link to comment Share on other sites More sharing options...
Nico de Bordeaux Posted November 22, 2017 Author Share Posted November 22, 2017 invite de commande windows C:\wamp64\bin\mysql\mysql5.7.19\bin\mysql.exe -h localhost -u root MA_DB < C:\wamp64\www\testvariablesql\testconsole.sql > C:\wamp64\www\testvariablesql\out.csv !!! il y a un problème sur les accents !!! j'ai pas trouvé comment importer le fichier testconsole.sql mais avec la console MySQL de wamp : USE MA_DB SELECT p.`id_product` AS 'Product ID', @row_number := CASE WHEN @product_no != @row_number THEN @row_number + 1 ELSE 1 END AS 'New Product ID', pl.`name` AS 'Name' FROM `ps_product` p CROSS JOIN (SELECT @product_no:= 0,@row_number:= 0) as temp LEFT JOIN `ps_product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = 2 ) GROUP BY p.`id_product` HAVING p.`id_product` IS NOT NULL ORDER BY p.`id_product` ASC INTO OUTFILE 'c:/wamp64/tmp/out.csv'; La ça marche nickel ! il faut utiliser le dossier tmp car my.ini protège les autres dossiers ou modifier my.ini ! Est ce que quelqu'un sait, soit corriger les accents dans l'invite de commande windows ou importer le fichier testconsole.sql dans la console MySQL de wamp ??? Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now