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_varcharpara el nombre. - JOIN con
catalog_product_entity_decimalpara 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!

