Cómo exportar productos y categorías por SQL en Magento: Guía completa para ecommerce y técnicos

¿Necesitas exportar tu catálogo de productos y categorías en Magento para integraciones externas, migraciones o informes personalizados? Aunque Magento ofrece herramientas de exportación, muchas veces necesitas obtener los datos directamente por SQL para más flexibilidad y velocidad, sobre todo en catálogos grandes.

En este artículo aprenderás paso a paso cómo:

  • Entender la estructura de la base de datos de Magento (productos, categorías, atributos).
  • Generar consultas SQL para exportar productos y categorías.
  • Preparar datos para integraciones externas (CSV, BI, otras tiendas).
  • Evitar errores frecuentes y proteger tu base de datos.
  • Optimizar tu tienda para SEO aprovechando estos datos.

¡Vamos a ello!

Índice de contenidos

¿Por qué exportar datos con SQL en Magento?

Exportar datos directamente por SQL es útil porque:

  • Es más rápido que las herramientas de exportación en el backend.
  • Permite seleccionar exactamente los datos que necesitas.
  • Evitas bloqueos o timeouts en Magento en catálogos grandes.
  • Facilita integraciones con sistemas externos.

Eso sí, ¡requiere conocimientos técnicos y precaución!

Estructura de la base de datos de Magento

Magento tiene una base de datos compleja. Los productos y categorías se distribuyen en múltiples tablas. Para trabajar con SQL necesitas conocer estas tablas clave:

TablaDescripción
catalog_product_entityProductos (ID, SKU, tipo).
catalog_category_entityCategorías (ID, árbol de jerarquía).
catalog_product_entity_varcharAtributos de texto (nombre, descripción, etc.).
catalog_product_entity_decimalAtributos numéricos (precio, peso, etc.).
catalog_category_entity_varcharNombres y descripciones de las categorías.
catalog_category_productRelación entre productos y categorías.

Magento usa un sistema EAV (Entity-Attribute-Value). Por eso, datos como nombres y descripciones no están en la tabla principal, sino en tablas separadas por tipo de dato (varchar, decimal, etc.).

Exportar productos con SQL

Supongamos que queremos exportar:

  • ID del producto
  • SKU
  • Nombre
  • Precio

Primero, necesitas conocer los IDs de atributos:

SELECT attribute_id, attribute_code
FROM eav_attribute
WHERE entity_type_id = (
  SELECT entity_type_id
  FROM eav_entity_type
  WHERE entity_type_code = 'catalog_product'
);

Esto devuelve un listado como:

attribute_idattribute_code
73name
99price

**Consulta para exportar productos con nombre y precio:**

SELECT 
    e.entity_id AS product_id,
    e.sku,
    name.value AS name,
    price.value AS price
FROM catalog_product_entity e
LEFT JOIN catalog_product_entity_varchar name 
    ON name.entity_id = e.entity_id 
    AND name.attribute_id = 73
LEFT JOIN catalog_product_entity_decimal price 
    ON price.entity_id = e.entity_id 
    AND price.attribute_id = 99;

**Explicación línea a línea:**

  • e.entity_id: ID del producto.
  • e.sku: SKU del producto.
  • JOIN con catalog_product_entity_varchar para el nombre.
  • JOIN con catalog_product_entity_decimal para el precio.

Así puedes exportar un CSV perfectamente usable.

Exportar categorías con SQL

Para categorías, el procedimiento es similar. Supongamos que queremos exportar:

  • ID de la categoría
  • Nombre
  • Parent ID

Consulta SQL:

SELECT 
    c.entity_id AS category_id,
    v.value AS name,
    c.parent_id
FROM catalog_category_entity c
LEFT JOIN catalog_category_entity_varchar v
    ON c.entity_id = v.entity_id
    AND v.attribute_id = (
      SELECT attribute_id
      FROM eav_attribute
      WHERE attribute_code = 'name'
      AND entity_type_id = (
        SELECT entity_type_id
        FROM eav_entity_type
        WHERE entity_type_code = 'catalog_category'
      )
    );

**Explicación:**

  • catalog_category_entity: tabla principal de categorías.
  • catalog_category_entity_varchar: contiene el nombre de la categoría.
  • parent_id: indica la jerarquía de la categoría.

Ejemplo práctico paso a paso

Imagina que quieres exportar todos tus productos con nombre y precio a un archivo CSV. Aquí te muestro cómo:

1. Ejecuta la query SQL anterior

Entra en tu consola MySQL:

mysql -u user -p database_name

Ejecuta la query y exporta a fichero:

SELECT 
    e.entity_id AS product_id,
    e.sku,
    name.value AS name,
    price.value AS price
FROM catalog_product_entity e
LEFT JOIN catalog_product_entity_varchar name 
    ON name.entity_id = e.entity_id 
    AND name.attribute_id = 73
LEFT JOIN catalog_product_entity_decimal price 
    ON price.entity_id = e.entity_id 
    AND price.attribute_id = 99
INTO OUTFILE '/var/lib/mysql-files/productos.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

¡Y tendrás tu CSV listo!

Buenas prácticas y seguridad

  • Siempre haz backup antes de ejecutar consultas complejas.
  • Prueba las queries primero en un entorno de staging.
  • No des permisos de escritura si solo necesitas leer datos.
  • Verifica atributos (IDs) antes de escribir JOINs.
  • Si vas a usar OUTFILE, verifica permisos y rutas seguras.

Magento es delicado. ¡Mejor prevenir que lamentar!

Beneficios SEO de trabajar con datos exportados

Exportar datos es clave para:

  • Revisar nombres de productos y categorías para optimizar keywords.
  • Auditar categorías vacías o duplicadas.
  • Crear feeds más rápidos para Google Shopping o marketplaces.

Una exportación bien hecha puede ayudarte a encontrar oportunidades SEO que se pierden en la interfaz de Magento.

Conclusión

Exportar productos y categorías en Magento mediante SQL es una habilidad imprescindible para ecommerce grandes o agencias. Te ahorra tiempo, facilita integraciones y te permite mantener un control absoluto sobre tu catálogo.

¿Necesitas exportar tu catálogo de Magento de forma segura y optimizada? ¡Contáctanos y te ayudamos!

Ir al contenido