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?
- Estructura de la base de datos de Magento
- Exportar productos con SQL
- Exportar categorías con SQL
- Ejemplo práctico paso a paso
- Buenas prácticas y seguridad
- Beneficios SEO de trabajar con datos exportados
- Conclusión
¿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:
Tabla | Descripción |
---|---|
catalog_product_entity | Productos (ID, SKU, tipo). |
catalog_category_entity | Categorías (ID, árbol de jerarquía). |
catalog_product_entity_varchar | Atributos de texto (nombre, descripción, etc.). |
catalog_product_entity_decimal | Atributos numéricos (precio, peso, etc.). |
catalog_category_entity_varchar | Nombres y descripciones de las categorías. |
catalog_category_product | Relació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_id | attribute_code |
---|---|
73 | name |
99 | price |
**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!