Saltar al contenido
Codifíca.me | Desarrollo web | Programación

Importar Exportar productos con Prestashop

8 junio, 2015



Importando o duplicando productos de una base de datos a otra base de datos para tiendas Prestashop, este el export para una tienda 1.5 que quiera migrar sus productos a una tienda 1.6.

Este es el código, solo tienes que cambiar el prefijo de tus tablas y el nombre de tus bases de datos.

OJO!, yo he querido dejar los 20 productos que venian por defecto en el template o theme, y por ello no limpio todos los productos solo los superiores a el id 20.
Esto también lo hice cuando monte la otra tienda, así que no hay problema. Pero en tu caso es posible que no quieres dejar ninguno o que tengas que borrarlos por que los id de la tienda que quieres exportar están por debajo de 20.

La versión 1.6 de prestashop tiene un campo que no tiene la versión 1.5 es por ello que el típico INSERT a SELECT no te funcionará.

presta

INSERT INTO bd1.ps_product
(`id_product`, `id_supplier`, `id_manufacturer`, `id_category_default`, `id_shop_default`, `id_tax_rules_group`, `on_sale`, `online_only`, `ean13`, `upc`, `ecotax`, `quantity`, `minimal_quantity`, `price`, `wholesale_price`, `unity`, `unit_price_ratio`, `additional_shipping_cost`, `reference`, `supplier_reference`, `location`, `width`, `height`, `depth`, `weight`, `out_of_stock`, `quantity_discount`, `customizable`, `uploadable_files`, `text_fields`, `active`, `redirect_type`, `id_product_redirected`, `available_for_order`, `available_date`, `condition`, `show_price`, `indexed`, `visibility`, `cache_is_pack`, `cache_has_attachments`, `is_virtual`, `cache_default_attribute`, `date_add`, `date_upd`, `advanced_stock_management`)
SELECT 
`id_product`, `id_supplier`, `id_manufacturer`, `id_category_default`, `id_shop_default`, `id_tax_rules_group`, `on_sale`, `online_only`, `ean13`, `upc`, `ecotax`, `quantity`, `minimal_quantity`, `price`, `wholesale_price`, `unity`, `unit_price_ratio`, `additional_shipping_cost`, `reference`, `supplier_reference`, `location`, `width`, `height`, `depth`, `weight`, `out_of_stock`, `quantity_discount`, `customizable`, `uploadable_files`, `text_fields`, `active`, `redirect_type`, `id_product_redirected`, `available_for_order`, `available_date`, `condition`, `show_price`, `indexed`, `visibility`, `cache_is_pack`, `cache_has_attachments`, `is_virtual`, `cache_default_attribute`, `date_add`, `date_upd`, `advanced_stock_management`
FROM bd2.ps_product WHERE id_product>20

Ahora importamos los textos que tengan los productos en todos los idiomas.

INSERT INTO bd1.ps_product_lang
SELECT 
*
FROM bd2.ps_product_lang WHERE id_product>20

Ahora importamos los precios, impuestos , cantidades minimas, fecha de alta del producto etc etc.
Igualmente como las tablas no son exactamente iguales preparamos la query para que no nos de problemas.

INSERT INTO bd1.ps_product_shop
(`id_product`, `id_shop`, `id_category_default`, `id_tax_rules_group`, `on_sale`, `online_only`, `ecotax`, `minimal_quantity`, `price`, `wholesale_price`, `unity`, `unit_price_ratio`, `additional_shipping_cost`, `customizable`, `uploadable_files`, `text_fields`, `active`, `redirect_type`, `id_product_redirected`, `available_for_order`, `available_date`, `condition`, `show_price`, `indexed`, `visibility`, `cache_default_attribute`, `advanced_stock_management`, `date_add`, `date_upd`) 
SELECT 
`id_product`, `id_shop`, `id_category_default`, `id_tax_rules_group`, `on_sale`, `online_only`, `ecotax`, `minimal_quantity`, `price`, `wholesale_price`, `unity`, `unit_price_ratio`, `additional_shipping_cost`, `customizable`, `uploadable_files`, `text_fields`, `active`, `redirect_type`, `id_product_redirected`, `available_for_order`, `available_date`, `condition`, `show_price`, `indexed`, `visibility`, `cache_default_attribute`, `advanced_stock_management`, `date_add`, `date_upd` 
FROM bd2.ps_product_shop WHERE id_product>20

Para las imágenes tenéis que hacer lo siguiente

INSERT INTO bd1.ps_image
SELECT 
*
FROM bd2.ps_image WHERE id_product>20

Para vincular las imágenes con las tienda realizamos lo siguiente.

INSERT INTO bd1.ps_image_shop
SELECT 
*
FROM bd2.ps_image_shop WHERE id_image>20;

Para asociar las imagenes de tu tienda al idioma de tu tienda, tendrás que realizar la siguiente Query

INSERT INTO bd1.ps_image_lang
SELECT 
*
FROM bd2.ps_image_lang

Este es el resumen para la parte de las imágenes, y recuerda copiar la carpeta entera de las imágenes antiguas a las imágenes nuevas.

La ruta para las imágenes de los productos es tuCarpetaRaiz/img/p . Después de que esté copiada deberías regenerar las imágenes, para ver que todo funciona perfectamente.

DELETE FROM ps_image WHERE id_product>20;
DELETE FROM ps_image_shop WHERE id_image>20;
DELETE FROM ps_image_lang;
 
INSERT INTO bd1.ps_image
SELECT 
*
FROM bd2.ps_image WHERE id_product>20;
 
INSERT INTO bd1.ps_image_shop
SELECT 
*
FROM bd2.ps_image_shop WHERE id_image>20;
 
 
INSERT INTO bd1.ps_image_lang
SELECT 
*
FROM bd2.ps_image_lang ;

Y listo, productos migrados 🙂