Jump to content

Export des produits d'un PS 1.4.8.2


Recommended Posts

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

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

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

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

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

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

 

 

post-139058-0-47531600-1477059432_thumb.png

Link to comment
Share on other sites

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

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

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

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 by doekia (see edit history)
Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...