sql >> Base de Datos >  >> RDS >> Mysql

Importación de productos Magento desde la base de datos mediante consulta SQL

No voy a publicar la consulta SQL completa porque es demasiado tedioso tratar de obtener datos de Magento manualmente a través de la base de datos, pero diré que está en el camino correcto. Para reducir el número de uniones para este tipo de cosas, recupero mis id_atributos de la tabla eav y los uso directamente. Esto significa que mi consulta solo funcionará en my instalación de Magento, pero eso no ha sido un problema para mí.

select attribute_code, attribute_id, backend_type from eav_attribute
    where entity_type_id = (select entity_type_id from eav_entity_type where entity_type_code = 'catalog_product')
      and attribute_code in ('name', 'url_path', 'price', 'image', 'description', 'manufacturer');

Rendimientos:

+----------------+--------------+--------------+
| attribute_code | attribute_id | backend_type |
+----------------+--------------+--------------+
| description    |           61 | text         |
| image          |           74 | varchar      |
| manufacturer   |           70 | int          |
| name           |           60 | varchar      |
| price          |           64 | decimal      |
| url_path       |           87 | varchar      |
+----------------+--------------+--------------+

¡Ahora estás listo para el tedio! Para cada código de atributo, únase a la tabla de back-end (catalog_product_entity_$BACKEND_TYPE ) en su ID de atributo dado. Para mí, esto convertiría una consulta sku/name/id (tu consulta en realidad no necesita unirse a los productos, ya que usas la entidad_id para hacer la unión...) en:

select p.sku, p.entity_id, n.value name
    from catalog_product_entity p
    join catalog_product_entity_varchar n on n.entity_id = p.entity_id
  where n.attribute_id = 60;

Continúe agregando nuevos conjuntos de instrucciones de unión|cláusula-dónde|cláusula-de-selección hasta que tenga todas las uniones que deseaba originalmente.

Dicho esto, Jonathan tiene razón en que usar el marco de Magento para administrar estos datos sería mucho más fácil que hacerlo manualmente a través de la base de datos. A menos que tenga una cantidad extrema de productos que necesite cargar todos a la vez (tenga en cuenta que hay dos suposiciones allí, y puede trabajar para reducir cualquiera), sería mucho más sólido usar el marco.

¡Espero que eso ayude!

Gracias, Joe