El blog de LiveCommerce

Un blog de comercio electrónico y tiendas online

Cómo recuperé los precios de una tienda online solo con SQL y copias de seguridad

El otro día me llama un cliente bastante nervioso porque todos los precios de su tienda online estaban mal. El error vino de una importación que no salió bien: él solo quería actualizar un par de productos, pero el sistema acabó poniendo el mismo precio a toda la tienda.

Imagínate el panorama: cientos de productos con precios incorrectos y el cliente con la tienda parada. Corregirlo a mano era imposible, y el tiempo corría en contra.

Aquí es donde se demuestra la importancia de las copias de seguridad. Yo siempre guardo la base de datos de los últimos días, y gracias a eso pude recuperar los precios en cuestión de minutos, sin necesidad de tocar código PHP, Python ni nada parecido: todo se resolvió directamente desde MySQL.

✅ Solución paso a paso

1) Restaurar la copia en local y extraer el CSV

Lo primero que hice fue restaurar la base de datos en mi ordenador local a partir de la copia de seguridad. Luego, ejecuté una consulta para sacar un CSV con el product_id y el price:

SELECT product_id, price
FROM product
INTO OUTFILE '/tmp/product_price.csv'
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';

Con esto, MySQL me generó un archivo CSV con todos los precios correctos.

2) Revisar y subir el CSV al servidor

Después revisé el archivo y, si todo estaba bien, lo subí al servidor donde está alojada la base de datos del cliente (por ejemplo, en la carpeta /tmp).

3) Crear una tabla temporal

En la base de datos del cliente, creé una tabla temporal para guardar los datos del CSV:

CREATE TABLE IF NOT EXISTS product_price_update (
  product_id INT PRIMARY KEY,
  price DECIMAL(10,2)
);

4) Importar el CSV en la tabla temporal

Con la tabla creada, cargué los datos del CSV en ella:

LOAD DATA INFILE '/tmp/product_price.csv'
INTO TABLE product_price_update
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(product_id, price);

5) Actualizar los precios en la tabla de productos

Ya con los datos cargados en la tabla temporal, comprobé que todo estuviera correcto y lancé el UPDATE JOIN:

UPDATE product p
JOIN product_price_update u ON p.product_id = u.product_id
SET p.price = u.price;

Con esta consulta, los precios de todos los productos quedaron restaurados automáticamente.

6) Eliminar la tabla temporal

Para terminar, eliminé la tabla auxiliar y dejé la base de datos limpia:

DROP TABLE product_price_update;

? Conclusión

  • Las copias de seguridad recientes son el plan B que siempre hay que tener.
  • Con SQL bien aplicado, un problema masivo se resuelve en minutos.
  • No hubo que tocar nada de código de aplicación: todo desde MySQL.

El cliente recuperó su tienda al instante y pudo seguir vendiendo sin perder tiempo. Situaciones como esta dejan claro que las copias de seguridad y conocer bien la base de datos son la diferencia entre un problema grave y una solución rápida.

Compártelo:

¿Tienes alguna consulta?

Si tienes alguna pregunta o sabes la respuesta sobre algún comentario, no dudes en contribuir.
Responderemos rápidamente.
Puedes utilizar etiquetas BBCode para escribir negrita, enlaces, imágenes, etc...
Más información en la página oficial de BBCOde http://www.bbcode.org/ Ejemplo:
[url=http://google.com]links[/url], [color=red]colores[/color] [b]negrita[/b]...

¿Has visto los videos en nuestro canal de Youtube?

En nuestro canal de Youtube publicamos periódicamente mejoras y funcionalidades del software de ecommerce.