Avisos
Vaciar todo

exportacion masiva mediante consulta sql  

 
ANA
 ANA
Usuario experto

Hola a todos.

Estoy intentando hacer una exportación masiva de productos para un comparador y para facebook. El problema es que casi todos mis productos tienen atributos y despues de mucho buscar, estoy desesperada porque no encuentro nada que funcione (y sea gratis).
He leído sobre gente que en el pasado ha hecho exportaciones de forma masiva con consultas sql pero no soy capaz de generar una consulta que funcione.

Los datos que necesito exportar, teniendo en cuenta que tengo productos con atributos (y en cada atributo referencia, ean13 y precio diferente) son:

nombre
Atributo
Valor del atributo
descripción corta
referencia de proveedor
ean13
url producto
url imagen
precio de venta con impuestos

Espero que podais ayudarme, no se nada de lenguaje sql

URL del sitio: Contenido solo visible a usuarios registrados

Citar
Respondido : 11/03/2017 8:29 pm
Pepe
 Pepe
Soporte CMS Webempresa Admin

Hola Ana.

Prueba lo siguiente:
.- Accede a Parámetros Avanzados -> Consultas MySQL
.- Pulsa en Añadir una nueva consulta SQL

Nombre de la consulta SQL: Añade el nombre que quieras para tener identificado
Consulta SQL, añade lo siguiente:

SELECT pat.id_product
    , prd.reference
    , GROUP_CONCAT(DISTINCT(concat(atgl.name, ":", atg.group_type, ":", atg.position)) SEPARATOR ", ")
    , GROUP_CONCAT(DISTINCT(concat(pal.name, ":", atg.position)) SEPARATOR ", ")
    , pat.supplier_reference
    , pat.reference
 FROM ps_product_attribute pat
INNER JOIN ps_product prd ON (prd.id_product = pat.id_product)
 LEFT JOIN ps_product_attribute_combination pac ON (pat.id_product_attribute = pac.id_product_attribute)
 LEFT JOIN ps_attribute att ON (pac.id_attribute = att.id_attribute)
 LEFT JOIN ps_attribute_group atg ON ( atg.id_attribute_group = att.id_attribute_group)
 LEFT JOIN ps_attribute_group_lang atgl ON ( atgl.id_attribute_group = atg.id_attribute_group)
 LEFT JOIN ps_attribute_lang pal ON (pac.id_attribute = pal.id_attribute AND pal.id_lang = atgl.id_lang)
WHERE atgl.id_lang = 1
GROUP BY pat.id_product_attribute
ORDER BY pat.id_product, pac.id_attribute

Nota: tienes que modificar ps_attribute por la extensión que tienen tus tablas de prestashop.

¿ como localizar la extensión de tus talabas ?, fácil, en la misma ventana veras el apartado Lista de tablas de MySQL, en esa lista puedes encontrar la extensión de tus tablas.

.- Guarda los cambios
.- selecciona exportar en la consulta que creaste.

Comprueba si son esos los resultados que buscabas

Un saludo

ResponderCitar
Respondido : 11/03/2017 10:22 pm

Gestor de Contraseñas - VPN Conexión Segura - Gestor 2FA (Segundo Factor de Autenticación

ANA
 ANA
Usuario experto

Me saca bien las referencias de proveedor, las id del producto (que no las quiero, solo quiero el nombre), el atributo y valor del atributo... el resto nada. ¿Como completo la consulta?

descripción corta
referencia de proveedor
ean13
url producto
url imagen
precio de venta con impuestos

ResponderCitar
Respondido : 12/03/2017 8:03 pm
Pepe
 Pepe
Soporte CMS Webempresa Admin

Hola Ana.

Con la consulta que te pase puedes exportar todas las combinaciones, luego desde catalogo -> productos, puedes exportar los datos que te faltan pulsando en el icono de exportar:

Un saludo

ResponderCitar
Respondido : 13/03/2017 12:25 pm

wpdoctor-revisa-la-salud-de-tu-wordpress

ANA
 ANA
Usuario experto

No me los exporta en el mismo orden, así que no puedo copiar unas columnas de un archivo y pasarlos a otro para completarlo. Además, la exportación de productos tiene el inconveniente de que, no se por qué, pero parte de los precios me los saca en formato de fecha.
Tampoco saca la url del producto ni el ean13.
Necesito todos los datos en el mismo archivo:
nombre
Atributo
Valor del atributo
descripción corta
referencia de proveedor
ean13
url producto
url imagen
precio de venta con impuestos

ResponderCitar
Respondido : 13/03/2017 1:54 pm
Pepe
 Pepe
Soporte CMS Webempresa Admin

Hola Ana.

Adjunto tienes un modulo para la exportación de productos que te saca todos los datos, menos las variaciones que las puedes sacar de la consulta que te pase anteriormente:

Luego con exel podrías relacionar los IDE de los productos y con alguna función que te añada las combinaciones para ese archivo.

Un saludo

ResponderCitar
Respondido : 13/03/2017 2:23 pm

ANA
 ANA
Usuario experto

las url estan incompletas y los ean13 no salen

ResponderCitar
Respondido : 13/03/2017 2:38 pm
Jhon
 Jhon
Soporte CMS Webempresa Moderator

Hola

Si quieres el nombre se complica un poco la consulta porque se tomará de la tabla de idiomas, sin embargo el ean13 si que lo obtienes, he modificado la consulta, relacionado con el idioma 1 (prdlang.id_shop = 1)

Verifica la siguiente consulta:

SELECT pat.id_product
	, prd.ean13
	, prdlang.name
    , prd.reference
    , GROUP_CONCAT(DISTINCT(concat(atgl.name, ":", atg.group_type, ":", atg.POSITION)) SEPARATOR ", ")
    , GROUP_CONCAT(DISTINCT(concat(pal.name, ":", atg.POSITION)) SEPARATOR ", ")
    , pat.supplier_reference
    , pat.reference
 FROM ps_product_attribute pat
INNER JOIN ps_product prd ON (prd.id_product = pat.id_product)
INNER JOIN ps_product_lang prdlang ON (prd.id_product = prdlang.id_product and prdlang.id_shop = 1)
 LEFT JOIN ps_product_attribute_combination pac ON (pat.id_product_attribute = pac.id_product_attribute)
 LEFT JOIN ps_attribute att ON (pac.id_attribute = att.id_attribute)
 LEFT JOIN ps_attribute_group atg ON ( atg.id_attribute_group = att.id_attribute_group)
 LEFT JOIN ps_attribute_group_lang atgl ON ( atgl.id_attribute_group = atg.id_attribute_group)
 LEFT JOIN ps_attribute_lang pal ON (pac.id_attribute = pal.id_attribute AND pal.id_lang = atgl.id_lang)
WHERE atgl.id_lang = 1
GROUP BY pat.id_product_attribute
ORDER BY pat.id_product, pac.id_attribute

Saludos.

ResponderCitar
Respondido : 13/03/2017 5:33 pm

Cursos Gratuitos WordPress

ANA
 ANA
Usuario experto

el ean13 sigue sin salir... ten en cuenta que al tener atributos muchos de mis productos los ean13 válidos son los de las combinaciones, los asociados al atributo... además seguimos sin tener la url completa del producto ni de las imagenes

ResponderCitar
Respondido : 13/03/2017 6:45 pm
Jhon
 Jhon
Soporte CMS Webempresa Moderator

HOla

En la consulta anterior cambia

prd.ean13

por

pat.ean13

Esto te dará el ean13 de las combinaciones, cuando dices url te refieres a una careacterística que has definido?, no hay campo url para el producto, las imágenes son por combinación o es a nivel del producto.

La consulta se puede volver más compleja si se agrega nuevas tablas, tal vez si vas a estar haciendo siempre este tipo de trabajo si que sea bueno evaluar algún módulo de exportación, revisa:
https://addons.prestashop.com/es/importacion-exportacion-de-datos/6253-export-products.html

Saludos.
https://addons.prestashop.com/es/importacion-exportacion-de-datos/6253-export-products.html

ResponderCitar
Respondido : 13/03/2017 11:20 pm

optimiza-automaticamente-todas-las-imagenes-de-tu-wordpress

ANA
 ANA
Usuario experto

Las imágenes a nivel de producto puedan servir.
La importación va a ser ahora porque una vez creado el archivo no es tan complicado mantenerlo manualmente con el nivel de cambios que estoy teniendo. Más adelante, si veo que se me complica, miraría los módulos. De todas formas, alguno lo he probado pero también me ha dado problemas, especialmente con todo lo relacionado con las combinaciones.
Las url, solo me saca la parte reescrita, pero no me saca la raíz. Es decir, me da como resultado:
261-planet-pet-snack-tiras-pollo.html
cuando la url que necesito es:

friendlypet.es/shop/es/snacks-y-compementos/261-planet-pet-snack-tiras-pollo.html

Este problema ya lo tuve con el feed de google y lo solucioné añadiendo una regla a la importación, pero ahora no se como arreglarlo.
Me veo creando el csv a mano y es un curro de la leche...

ResponderCitar
Respondido : 14/03/2017 11:43 am
Jhon
 Jhon
Soporte CMS Webempresa Moderator

Hola

Para el tema de url , lo que quieres es la url absoluta, pero esto se puede formar en base a la url de tu sitio y la url de la categoría, ya que PrestaShop no almacena urls absolutas, revisa:
https://www.prestashop.com/forums/topic/144664-solved-export-product-urls/

Esta concatenación la puedes realizar ya en tu CSV o en Excel, no es necesario que sea parte de la consulta.

En tu consulta tendrías que añadir la categoría y además las tablas de imágenes relacionadas, si te complicas con esto te sugiero consultar a un desarrollador ya que la consulta podría complicarse.

Saludos.

ResponderCitar
Respondido : 14/03/2017 5:20 pm

Gestor de Contraseñas - VPN Conexión Segura - Gestor 2FA (Segundo Factor de Autenticación

ANA
 ANA
Usuario experto

¿Debo entender entonces que la consulta sql que pido no es viable? ¿Necesito pagar por un módulo o un desarrollador para hacer una exportación completa de mis productos con combinaciones? Prefiero echarle un mes de trabajo y crear el csv yo sola, pero me sorprendería que prestashop permita las importaciones en csv y luego de problemas con las exportaciones ¿Es así como funciona?

ResponderCitar
Respondido : 14/03/2017 5:31 pm
Jhon
 Jhon
Soporte CMS Webempresa Moderator

Hola

La consulta que quieres si es viable, lo único que es compleja, PrestaShop es gratis y el código es abierto, sin embargo hay cosas que no vienen implementadas y es allí en donde entran los módulos externos que en la mayoría de los casos son de pago.

Para el caso de las imágenes, en la base de datos sólo se almacena el ID, luego PrestaShop resuelve este ID y ubica la imagen en una carpeta, tu consulta para obtener la ID de la imagen sería agregando la tabla ps_image

SELECT pat.id_product
	, prd.ean13
	, img.id_image
	, prdlang.name
    , prd.reference
    , GROUP_CONCAT(DISTINCT(concat(atgl.name, ":", atg.group_type, ":", atg.POSITION)) SEPARATOR ", ")
    , GROUP_CONCAT(DISTINCT(concat(pal.name, ":", atg.POSITION)) SEPARATOR ", ")
    , pat.supplier_reference
    , pat.reference
 FROM ps_product_attribute pat
INNER JOIN ps_product prd ON (prd.id_product = pat.id_product)
INNER JOIN ps_product_lang prdlang ON (prd.id_product = prdlang.id_product and prdlang.id_shop = 1)
LEFT JOIN ps_image img ON (prd.id_product = img.id_product)
 LEFT JOIN ps_product_attribute_combination pac ON (pat.id_product_attribute = pac.id_product_attribute)
 LEFT JOIN ps_attribute att ON (pac.id_attribute = att.id_attribute)
 LEFT JOIN ps_attribute_group atg ON ( atg.id_attribute_group = att.id_attribute_group)
 LEFT JOIN ps_attribute_group_lang atgl ON ( atgl.id_attribute_group = atg.id_attribute_group)
 LEFT JOIN ps_attribute_lang pal ON (pac.id_attribute = pal.id_attribute AND pal.id_lang = atgl.id_lang)
WHERE atgl.id_lang = 1
GROUP BY pat.id_product_attribute
ORDER BY pat.id_product, pac.id_attribute

Si quieres ver la imagen tendrías que crear la url, revisa:
https://www.prestashop.com/forums/topic/83266-in-what-table-is-the-reference-to-the-product-image-file-name/

A esto me refería cuando te comento que se vuelve complejo, si no conoces mucho de código.

Lo que podrías evaluar es probar exportar por partes para que no lo resuelvas todo en una sola consulta, por ejemplo exporta desde PrestaShop con algunos campos de productos, y luego únelos con el de esta consulta.

Saludos.

ResponderCitar
Respondido : 14/03/2017 8:52 pm

wpdoctor-revisa-la-salud-de-tu-wordpress

ANA
 ANA
Usuario experto

ok, veré a ver qué puedo hacer

ResponderCitar
Respondido : 14/03/2017 9:06 pm