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.
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á.
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 🙂