Introducción
Exportar datos desde Magento mediante SQL puede ayudarte a integrar catálogos con otros sistemas, hacer migraciones, generar reportes personalizados o automatizar procesos sin pasar por la interfaz administrativa.
En esta guía técnica te mostramos cómo exportar productos y categorías desde Magento utilizando consultas SQL, con explicaciones detalladas de cada tabla, relación y campo relevante.
Índice
- 1. Estructura de base de datos en Magento
- 2. Consultas para exportar productos completos
- 3. Consultas para exportar categorías
- 4. Vincular productos con sus categorías
- 5. Cómo incluir atributos, precios, stock y URLs
- 6. Exportar resultados como CSV automáticamente
- 7. Buenas prácticas y errores a evitar
- 8. Conclusión
1. Estructura de la base de datos de Magento
Magento utiliza una arquitectura EAV (Entidad-Atributo-Valor), por lo tanto los productos y categorías no están en una única tabla, sino distribuidos entre varias:
Tabla | Descripción |
---|---|
catalog_product_entity | Productos base (IDs, tipos) |
catalog_category_entity | Categorías base |
catalog_category_product | Relación producto ↔ categoría |
catalog_product_entity_varchar | Nombre, descripción, slug |
catalog_product_entity_decimal | Precio, peso |
cataloginventory_stock_item | Inventario |
2. Consulta SQL para exportar productos básicos
SELECT e.entity_id AS product_id, sku, name.value AS name, price.value AS price FROM catalog_product_entity AS e JOIN catalog_product_entity_varchar AS name ON name.entity_id = e.entity_id AND name.attribute_id = (SELECT attribute_id FROM eav_attribute WHERE attribute_code = 'name' AND entity_type_id = 4) JOIN catalog_product_entity_decimal AS price ON price.entity_id = e.entity_id AND price.attribute_id = (SELECT attribute_id FROM eav_attribute WHERE attribute_code = 'price' AND entity_type_id = 4);
3. Consulta SQL para exportar categorías
SELECT c.entity_id AS category_id, name.value AS name, c.parent_id FROM catalog_category_entity AS c JOIN catalog_category_entity_varchar AS name ON name.entity_id = c.entity_id AND name.attribute_id = (SELECT attribute_id FROM eav_attribute WHERE attribute_code = 'name' AND entity_type_id = 3);
4. Vincular productos con categorías
SELECT p.product_id, p.category_id FROM catalog_category_product AS p ORDER BY p.category_id;
5. Incluir más atributos (stock, URL, tipo)
SELECT e.entity_id, sku, qty, url.request_path FROM catalog_product_entity AS e JOIN cataloginventory_stock_item AS s ON s.product_id = e.entity_id LEFT JOIN url_rewrite AS url ON url.entity_id = e.entity_id AND url.entity_type = 'product';
6. Exportar resultados como CSV
<?php $result = mysqli_query($conn, $consulta); $fp = fopen('productos.csv', 'w'); while ($row = mysqli_fetch_assoc($result)) { fputcsv($fp, $row); } fclose($fp); ?>
7. Buenas prácticas
- ✅ Usa
EXPLAIN
para comprobar el rendimiento - 📦 Exporta por lotes si tienes muchos productos
- 📁 Usa campos
created_at
yupdated_at
para exportaciones incrementales - 🔐 No expongas estos scripts sin autenticación segura
8. Conclusión
Exportar productos y categorías directamente desde MySQL en Magento te da velocidad, control y escalabilidad. Puedes automatizar procesos, generar informes personalizados o integrarlo con hojas de cálculo y ERPs.
📩 Si necesitas un exportador personalizado con filtros, multitienda o por fechas, escríbenos y te lo desarrollamos a medida.