Índice
Introducción 1. Consideraciones previas a la migración 2. Datos que se pueden migrar 3. Exportar productos de una tienda (MySQL) 4. Importar datos en la nueva tienda 5. Migrar con script PHP (más controlado) 6. Sincronizar IDs entre tiendas 7. Validar resultados de la migración 8. Comparativa de métodos de migración ConclusiónIntroduccion
Cuando trabajamos con varias tiendas PrestaShop o enfrentamos procesos de reestructuración, staging, pruebas o relanzamientos, es habitual necesitar mover información de una tienda a otra. Migrar datos manualmente o desde el back-office puede ser ineficiente, especialmente cuando hablamos de productos, categorías, clientes o pedidos en volumen.
En este artículo veremos cómo migrar datos entre dos tiendas PrestaShop de forma controlada, usando SQL y PHP. Cubriremos la selección de tablas clave, la exportación e importación eficiente y las validaciones posteriores.
- Consideraciones previas a la migración
Antes de mover cualquier dato:
- Ambas tiendas deben usar la misma versión de PrestaShop
- El prefijo de tablas puede cambiar (ps_, ps2_, etc.)
- Es recomendable realizar pruebas en un entorno staging
- Siempre haz una copia de seguridad completa de ambas bases de datos
- Datos que se pueden migrar
Tipo de dato | Tablas principales |
Productos | ps_product, ps_product_lang, ps_product_shop, ps_stock_available, ps_image, ps_image_lang |
Categorías | ps_category, ps_category_lang, ps_category_shop |
Clientes | ps_customer, ps_address |
Pedidos | ps_orders, ps_order_detail, ps_order_invoice |
Configuración | ps_configuration, ps_shop, ps_lang, ps_currency |
Consejo: No es necesario migrar todo. Puedes filtrar por ID o fecha.
- Exportar productos de una tienda (MySQL)
— Exportar productos a un archivo externo
SELECT * FROM ps_product INTO OUTFILE '/tmp/productos.sql' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n';
Alternativamente, usa mysqldump:
mysqldump -u usuario -p basedatos ps_product ps_product_lang > productos.sql
- Importar datos en la nueva tienda
Desde archivo SQL:
mysql -u usuario -p nueva_base < productos.sql
Desde archivo CSV (vía PHPMyAdmin o LOAD DATA):
LOAD DATA INFILE '/tmp/productos.csv' INTO TABLE ps_product FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
- Migrar con script PHP (más controlado)
Ejemplo de migración de productos desde una base de datos a otra:
<?php
$origen = new PDO(‘mysql:host=localhost;dbname=ps_tienda_origen’, ‘user’, ‘pass’);
$destino = new PDO(‘mysql:host=localhost;dbname=ps_tienda_destino’, ‘user’, ‘pass’);
$sql = ‘SELECT * FROM ps_product’;
$stmt = $origen->query($sql);
foreach ($stmt as $fila) {
$campos = array_keys($fila);
$valores = array_map(function($v) use ($destino) {
return $destino->quote($v);
}, array_values($fila));
$query = ‘INSERT INTO ps_product (‘.implode(‘,’, $campos).’) VALUES (‘.implode(‘,’, $valores).’)’;
$destino->exec($query);
}
echo «Migración de productos completada.»;
?>
Este enfoque permite mayor control, transformaciones de datos y validaciones en tiempo real.
- Sincronizar IDs entre tiendas
Cuando migras productos, es importante que los id_product, id_category y id_image se mantengan o se reconstruyan correctamente para evitar problemas con combinaciones, URLs e imágenes.
Recomendaciones:
- Desactiva AUTO_INCREMENT temporalmente si quieres mantener IDs
- Si no, mapea nuevos IDs y actualiza las tablas relacionadas
- Validar resultados de la migración
Verificar recuento:
SELECT COUNT(*) FROM ps_product;
Comparar IDs:
SELECT id_product FROM ps_product ORDER BY id_product DESC LIMIT 10;
Verificar integridad de imágenes:
SELECT * FROM ps_image WHERE id_product NOT IN (SELECT id_product FROM ps_product);
- Comparativa de métodos de migración
Método | Ventajas | Desventajas |
mysqldump + import | Rápido, fiable | Menos control de datos intermedios |
Script PHP | Flexible, permite transformaciones | Más lento, requiere programación |
CSV / Excel | Compatible con muchas herramientas | Puede generar errores de formato |
Conclusión
Migrar datos entre tiendas PrestaShop usando MySQL y PHP es una estrategia efectiva para replicar información o montar nuevos entornos. La clave está en planificar bien qué datos se migran, en qué orden, y validar que las referencias e IDs se mantienen coherentes.
El uso de scripts PHP permite, además, adaptar los datos durante la importación, detectar inconsistencias y dejar trazabilidad. Ya sea para migraciones parciales o completas, este enfoque técnico da mucha más seguridad que hacerlo manualmente.