chti56 Posted October 20, 2016 Share Posted October 20, 2016 Bonjour, Je suis toujours à larecherche d'une solution pour exporter me produits d'une boutique installée avec PS 1.4.8.2 pour les 'réinjecter' dans une boutique installée avec PS 1.6.1.7. J'ai essayé ce script: SELECT DISTINCT ps_product.id_product, ps_product.reference, ps_product.supplier_reference, ps_product_lang.name, ps_product.id_category_default, ps_manufacturer.name, ps_product.price, ps_product_lang.description_short, ps_product_lang.description, ps_product.quantity, ps_product.active FROM ps_product LEFT JOIN ( ps_category_product, ps_product_lang, ps_manufacturer) ON ( ps_product.id_product = ps_category_product.id_product AND ps_product.id_product=ps_product_lang.id_product AND ps_product.id_product=ps_product_lang.id_product AND ps_product.id_product = ps_category_product.id_product AND ps_product.id_manufacturer = ps_manufacturer.id_manufacturer ) - en local (avec XAMPP) je récupère bien toutes les informations - sur le site distant (chez OVH) les descriptions renvoient NULL alors que les tables et leurs contenus existent bien... Je ne comprends pas cette différence de résultat... Quelqu’un peut m'éclairer ? Merci d'avance. Link to comment Share on other sites More sharing options...
Alexandre Carette Posted October 20, 2016 Share Posted October 20, 2016 Bonjour Chti56, Peut etre que le site est en multilangue ? SELECT p.`id_product` AS `ID`, pl.`name` AS `Nom`, pl.`link_rewrite` AS `Link_rewrite`, pl.`description_short` AS `Desc_short`, pl.`description` AS `Desc_long`, pl.`meta_title` AS `Meta_title`, pl.`meta_keywords` AS `Meta_keyword`, pl.`meta_description` AS `Meta_desc`, p.`reference` AS`Ref`, cl.`id_category` AS `ID_Category`, cl.`name` AS `Category_defaut`, GROUP_CONCAT(DISTINCT(c.`id_category`) SEPARATOR ",") AS `Categories`, GROUP_CONCAT(DISTINCT(case when length(im.`id_image`)=6 then concat('http://www.tonsite.com/img/p/',insert(insert(insert(insert(insert(im.`id_image`,2,0,'/'),4,0,'/'),6,0,'/'),8,0,'/'),10,0,'/'),'/',im.`id_image`,'.jpg') when length(im.`id_image`)=5 then concat('http://www.tonsite.com/img/p/',insert(insert(insert(insert(im.`id_image`,2,0,'/'),4,0,'/'),6,0,'/'),8,0,'/'),'/',im.`id_image`,'.jpg') when length(im.`id_image`)=4 then concat('http://www.tonsite.com/img/p/',insert(insert(insert(im.`id_image`,2,0,'/'),4,0,'/'),6,0,'/'),'/',im.`id_image`,'.jpg') when length(im.`id_image`)=3 then concat('http://www.tonsite.com/img/p/',insert(insert(im.`id_image`,2,0,'/'),4,0,'/'),'/',im.`id_image`,'.jpg') when length(im.`id_image`)=2 then concat('http://www.tonsite.com/img/p/',insert(im.`id_image`,2,0,'/'),'/',im.`id_image`,'.jpg') when length(im.`id_image`)=1 then concat('http://www.tonsite.com/img/p/',insert(im.`id_image`,2,0,'/'),im.`id_image`,'.jpg') else '' end) SEPARATOR ",") AS `Images`, ml.`meta_title` AS `Marque`, ml.`id_manufacturer` AS `Marque_ID`, p.`price` AS `Prix`, pshop.`id_tax_rules_group` AS `ID_tax_group`, pshop.`on_sale` AS `On_sale`, psp.`reduction` AS `reduction`, psp.`reduction_tax` AS `tax_reduction`, psp.`reduction_type` AS `type_reduction`, psp.`from` AS `date_dbt_reduc`, psp.`to` AS `date_fin_reduc`, sa.`active` AS `Active`, p.`ean13` AS `EAN13`, p.`upc` AS 'UPC', sav.`quantity` AS `Quantity`, p.`visibility` AS `Visibility`, p.`indexed` AS `Indexed`, MAX(image_shop.id_image) id_image, concat(pl.`link_rewrite`,'-',p.`id_product`,'.html') AS `URL_google`, concat('http://www.tonsite.com/',pl.`link_rewrite`,'-',p.`id_product`,'.html') AS `Produit_URL`, case when length(im.`id_image`)=6 then concat('http://www.tonsite.com/img/p/',insert(insert(insert(insert(insert(im.`id_image`,2,0,'/'),4,0,'/'),6,0,'/'),8,0,'/'),10,0,'/'),'/',im.`id_image`,'.jpg') when length(im.`id_image`)=5 then concat('http://www.tonsite.com/img/p/',insert(insert(insert(insert(im.`id_image`,2,0,'/'),4,0,'/'),6,0,'/'),8,0,'/'),'/',im.`id_image`,'.jpg') when length(im.`id_image`)=4 then concat('http://www.tonsite.com/img/p/',insert(insert(insert(im.`id_image`,2,0,'/'),4,0,'/'),6,0,'/'),'/',im.`id_image`,'.jpg') when length(im.`id_image`)=3 then concat('http://www.tonsite.com/img/p/',insert(insert(im.`id_image`,2,0,'/'),4,0,'/'),'/',im.`id_image`,'.jpg') when length(im.`id_image`)=2 then concat('http://www.tonsite.com/img/p/',insert(im.`id_image`,2,0,'/'),'/',im.`id_image`,'.jpg') when length(im.`id_image`)=1 then concat('http://www.tonsite.com/img/p/',insert(im.`id_image`,2,0,'/'),im.`id_image`,'.jpg') else '' end AS `URL_IMG_1` FROM `ps_product` p LEFT JOIN `ps_product_lang` pl ON (p.`id_product` = pl.`id_product`) LEFT JOIN `ps_category_product` cp ON (p.`id_product` = cp.`id_product`) LEFT JOIN `ps_category_lang` cl ON (cp.`id_category` = cl.`id_category`) LEFT JOIN `ps_category` c ON (cp.`id_category` = c.`id_category`) LEFT JOIN `ps_product_lang` b ON (b.`id_product` = p.`id_product` AND b.`id_lang` = 1 AND b.`id_shop` = p.`id_shop_default`) LEFT JOIN `ps_image` i ON (i.`id_product` = p.`id_product`) LEFT JOIN `ps_manufacturer_lang` ml ON (p.`id_manufacturer` = ml.`id_manufacturer`) LEFT JOIN `ps_stock_available` sav ON (sav.`id_product` = p.`id_product` AND sav.`id_product_attribute` = 0 AND sav.`id_shop_group` = 0 AND sav.id_shop = 1 ) JOIN `ps_product_shop` sa ON (p.`id_product` = sa.`id_product` AND sa.`id_shop` = p.`id_shop_default`) LEFT JOIN `ps_shop` shop ON (shop.`id_shop` = p.`id_shop_default`) LEFT JOIN `ps_specific_price` psp ON (psp.`id_product` = p.`id_product`) LEFT JOIN `ps_product_shop` pshop ON (pshop.`id_product` = p.`id_product`) LEFT JOIN `ps_image_shop` image_shop ON (image_shop.`id_image` = i.`id_image` AND image_shop.`cover` = 1 AND image_shop.id_shop = p.`id_shop_default`) LEFT JOIN `ps_product_download` pd ON (pd.`id_product` = p.`id_product`) LEFT JOIN `ps_image` im on im.`id_product`= p.`id_product` WHERE 1 AND pl.id_lang = 1 GROUP BY sa.`id_product` ORDER BY p.`id_product` ASC Link to comment Share on other sites More sharing options...
doekia Posted October 20, 2016 Share Posted October 20, 2016 Pourquoi ne pas appliquer la migration sur ton install 1.4.8.2 puis ensuite exporter toutes les tables liées aux produits? Link to comment Share on other sites More sharing options...
chti56 Posted October 20, 2016 Author Share Posted October 20, 2016 Bonsoir, @Alex-Kodd La boutique n'est pas multilangue.. Je continue à chercher... @doekia Je ne l'ai pas fait parce que la base est importante (plus de 100MB) et je n'ai pas pu faire une sauvegarde complète fiable de la base actuelle. J'ai pourtant essayé de faire des sauvegardes ciblées mais à chaque fois la sauvegarde d'une table (order_detail) se termine prématurément et je n'ai donc pas une sauvegarde complète... Merci pour vos réponses. Link to comment Share on other sites More sharing options...
Alexandre Carette Posted October 20, 2016 Share Posted October 20, 2016 tu fais ca direct dans phpmyadmin ? Link to comment Share on other sites More sharing options...
chti56 Posted October 20, 2016 Author Share Posted October 20, 2016 Oui, directement. Que ce soit en local ou sur mon site distant. Cdt Link to comment Share on other sites More sharing options...
Alexandre Carette Posted October 20, 2016 Share Posted October 20, 2016 tu as essayé avec ma requête ? Link to comment Share on other sites More sharing options...
chti56 Posted October 20, 2016 Author Share Posted October 20, 2016 J'ai essayé mais j'ai des erreurs car certains champs n'existent pas (exemple: ps_stock_available) dans ma base. Je vais le regarder d'un peu plus près pour le modifier. Link to comment Share on other sites More sharing options...
chti56 Posted October 21, 2016 Author Share Posted October 21, 2016 Bonjour, J'ai essayé une nouvelle fois ce script: SELECT DISTINCT ps_product.id_product, ps_product.reference, ps_product.supplier_reference, ps_product_lang.name, ps_product.id_category_default, ps_manufacturer.name, ps_product.price, ps_product_lang.description_short, ps_product_lang.description, ps_product.quantity, ps_product.active FROM ps_product LEFT JOIN ( ps_category_product, ps_product_lang, ps_manufacturer) ON ( ps_product.id_product = ps_category_product.id_product AND ps_product.id_product=ps_product_lang.id_product AND ps_product.id_product=ps_product_lang.id_product AND ps_product.id_product = ps_category_product.id_product AND ps_product.id_manufacturer = ps_manufacturer.id_manufacturer ) Celui-ci me renvoie NULL pour les colonnes Description et Description_short J'ai vérifié la base de mon site distant et effectivement ces colonnes (ps_product_lang.description_short, ps_product_lang.description,) sont vides.. Pourtant les descriptions existent bien... Je ne voie pas où dans la base... Le site distant n'est pas multilingues. Bien que plusieurs langues soient installées, seul le Français est activé et possède l'ID 2 D'où cette question: ne faut-il pas préciser la langue en spécifiant l'ID de la langue ? Sur mon site local, ce même script me renvoie bien les descriptions. Mais sur ce site local plusieurs langues sont installée et activées. L'ID de la langue Française est aussi 2 . Autre différence le site local fonctionne avec PS 1.4.8.2 et PHP 5.6; le site distant fonctionne avec PS 1.4.8.2 et PHP 5.4 ... Merci pour vos lumières. JP Link to comment Share on other sites More sharing options...
Alexandre Carette Posted October 21, 2016 Share Posted October 21, 2016 WHERE ps_product_lang.id_lang = 2 Link to comment Share on other sites More sharing options...
chti56 Posted October 21, 2016 Author Share Posted October 21, 2016 Bonjour Alex-Kodd, Où placer cette instruction ? A la fin du script ? Merci beaucoup pour ton aide. JP Link to comment Share on other sites More sharing options...
chti56 Posted October 21, 2016 Author Share Posted October 21, 2016 J'ai appliqué ce script sur mon site distant: SELECT DISTINCT ps_product.id_product, ps_product.reference, ps_product.supplier_reference, ps_product_lang.name, ps_product.id_category_default, ps_manufacturer.name, ps_product.price, ps_product_lang.description_short, ps_product_lang.description, ps_product.quantity, ps_product.active FROM ps_product LEFT JOIN ( ps_category_product, ps_product_lang, ps_manufacturer) ON ( ps_product.id_product = ps_category_product.id_product AND ps_product.id_product=ps_product_lang.id_product AND ps_product.id_product=ps_product_lang.id_product AND ps_product.id_product = ps_category_product.id_product AND ps_product.id_manufacturer = ps_manufacturer.id_manufacturer ) WHERE ps_product_lang.id_lang = 2 .. et le résultat est vide (aucune ligne sélectionnée) ... JP Link to comment Share on other sites More sharing options...
chti56 Posted October 21, 2016 Author Share Posted October 21, 2016 Voici dans la capture jointe un extrait de la table ps-product-lang (on y trouve pourtant des descriptions...)... JP Link to comment Share on other sites More sharing options...
Alexandre Carette Posted October 21, 2016 Share Posted October 21, 2016 et ca ? SELECTp.`id_product` AS `ID`,pl.`name` AS `Nom`,pl.`description_short` AS `Desc_short`,pl.`description` AS `Desc_long` FROM `ps_product` pLEFT JOIN `ps_product_lang` pl ON (p.`id_product` = pl.`id_product`) WHERE pl.`id_lang` = 2 Link to comment Share on other sites More sharing options...
chti56 Posted October 21, 2016 Author Share Posted October 21, 2016 Et pourtant les descriptions existent !! Voir pièce jointe... Link to comment Share on other sites More sharing options...
chti56 Posted October 21, 2016 Author Share Posted October 21, 2016 Il y a du mieux avec ton script qui rend ceci (voir pièce jointe). Quelle est la différence ? Si ce script fonctionne comme ça y ressemble, il faut donc ajouter les autres champs à exporter je pense... CaD inclure les champs des scripts précédents... GRAND merci pour ton aide. JP Link to comment Share on other sites More sharing options...
chti56 Posted October 21, 2016 Author Share Posted October 21, 2016 J'ai essayé cette modification sur le fichier que tu m'as transmis: SELECT p.`id_product` AS `ID`, pl.`active` AS `Actif`, pl.`name` AS `Nom`, pl.`price` AS `Price`, pl.`reference`AS `reference`, pl.`ecotax` AS `Ecotax`, pl.`weight` AS `Weight`, pl.`quantity` AS `Quantity`, pl.`description_short` AS `Desc_short`, pl.`description` AS `Desc_long` pl.`meta_keywords` AS `Meta-keywords` FROM `ps_product` p LEFT JOIN `ps_product_lang` pl ON (p.`id_product` = pl.`id_product`) WHERE pl.`id_lang` = 2 Mais j'ai une erreur sur le ligne meta-keywords... Je pense que c'est dû au fait que cette colonne ne se trouve pas dans la table ps_product.. Comment le spécifier ?? Merci Link to comment Share on other sites More sharing options...
chti56 Posted October 21, 2016 Author Share Posted October 21, 2016 J'ai en fait une erreur de syntaxe;.. il manque une "," après 'Meta-keywords'... ... mais ça ne fonctionne toujours pas car j'ai une première erreur d'exécution (#1054 - unknown column) sur pl.`active` AS `Actif`, .. je sèche complètement car cette colonne existe bien dans la table ps_product... et j'ai vraiment besoin de vos lumières... Merci d'avance. Link to comment Share on other sites More sharing options...
doekia Posted October 21, 2016 Share Posted October 21, 2016 si la colonne existe dans la table ps_product que tu as aliassé en p alors tu dois l'adresser en p.active faudrait quand même un peu lire la documentation avant de se lancer dans ce genre de manip Link to comment Share on other sites More sharing options...
chti56 Posted October 22, 2016 Author Share Posted October 22, 2016 Désolé de te déranger grand roi du SQL Link to comment Share on other sites More sharing options...
Alexandre Carette Posted October 22, 2016 Share Posted October 22, 2016 Il faut que tu essayes de comprendre ce que tu fait... pour cela regarde tes tables dans phpmyadmin... Link to comment Share on other sites More sharing options...
chti56 Posted October 22, 2016 Author Share Posted October 22, 2016 Bonjour, N'étant pas un expert comme certains de SQL.. j'essaye de comprendre. J'ai fait ceci: SELECT p.`id_product` AS `ID`, p.`active` AS `Actif`, pl.`name` AS `Nom`, p.`id_category_default` AS `categorie`, p.`price` AS `Price`, p.`reference`AS `reference`, p.`ecotax` AS `Ecotax`, p.`weight` AS `Weight`, p.`quantity` AS `Quantity`, pl.`description_short` AS `Desc_short`, pl.`description` AS `Desc_long` FROM `ps_product` p LEFT JOIN `ps_product_lang` pl ON (p.`id_product` = pl.`id_product`) WHERE pl.`id_lang` = 2 .. et ça semble fonctionner car je n'ai plus d'erreur et j'obtiens un fichier CSV compréhensible. Maintenant je regarde quels champs sont indispensables (et leurs correspondance en terme de Primary_Key dans la structure de la BDD) pour l'export. Cdt. Link to comment Share on other sites More sharing options...
doekia Posted October 22, 2016 Share Posted October 22, 2016 (edited) J'en reviens à l'idée initiale. Au lieu de faire du sql que tu ne maitrise pas et oublier des trucs, migre ta bdd, et ensuite export/import En gros monte un prestashop 1.4.8.2 vierge importe dedans tes tables produits 1.4.8.2 migre export et importe dans ton nouveau prestashop 1.6.x.x Edited October 22, 2016 by doekia (see edit history) Link to comment Share on other sites More sharing options...
chti56 Posted October 22, 2016 Author Share Posted October 22, 2016 C'est ce que je suis en train de faire. Merci pour ton aide. JP 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