mysqldump -u root -p --single-transaction shop orders --result-file=orders.sql vuelca una tabla de la base, y mysql shop < orders.sql la devuelve a su sitio sin tocar ninguna otra. La respuesta corta esconde dos cosas: el volcado empieza con DROP TABLE IF EXISTS, y con --where puedes volcar solo las filas que te importan.
1. Volcar una tabla
$ clai haz un volcado de la tabla orders de la base shop→ mysqldump -h my8 -uroot -p --single-transaction shop orders --result-file=orders.sql
Primero va el nombre de la base y después las tablas, separadas por espacios. --single-transaction toma un volcado de InnoDB sin bloquear: en una base viva ese flag no es opcional. --result-file en lugar de > conserva los saltos de línea y evita que el texto de un error acabe dentro del volcado.
2. Qué contiene ese volcado
$ clai muestra las líneas significativas del volcado→ grep -E 'DROP TABLE|CREATE TABLE|INSERT INTO' orders.sqlDROP TABLE IF EXISTS `orders`;CREATE TABLE `orders` (INSERT INTO `orders` VALUES (1,'acme',120.50,'2026-08-01'),(2,'globex'
Aquí está lo que nadie menciona. La primera instrucción es DROP TABLE IF EXISTS. Restaurar este archivo no fusiona datos con los actuales: reemplaza la tabla por su estado en el momento del volcado.
3. Solo la estructura, sin filas
$ clai vuelca solo la estructura de la tabla orders→ mysqldump -h my8 -uroot -p --no-data shop orders --result-file=schema.sql
--no-data conserva el CREATE TABLE y elimina todos los INSERT — verificado, el archivo no contiene ni una inserción. Práctico para comparar con diff el esquema de producción y el de pruebas.
4. Volcar solo las filas que necesitas
$ clai vuelca solo los pedidos de agosto→ mysqldump -h my8 -uroot -p --single-transaction --where="created >= '2026-08-01'" shop orders --result-file=august.sqlINSERT INTO `orders` VALUES (1,'acme',120.50,'2026-08-01'),(3,'initech',45.20,'2026-08-10');
Entraron dos filas de tres: el pedido de julio quedó fuera. La línea de arriba es el INSERT del archivo resultante. Así se hacen extractos quirúrgicos: por fecha, por cliente, por rango de id.
5. Restaurar una tabla en una base viva
$ clai restaura la tabla orders desde el volcado→ mysql -h my8 -uroot -p shop < orders.sql
Verificado contra una base viva: orders tenía 2 filas antes de restaurar y 3 después, mientras la tabla vecina customers quedó exactamente igual. Así se revierte una tabla sin molestar a las demás.
6. El mismo volcado en otra base
$ clai carga el volcado de la tabla en la base shop_copy→ mysql -h my8 -uroot -p shop_copy < orders.sql
Un volcado de una sola tabla no contiene CREATE DATABASE ni USE, así que el destino lo elige el argumento que le das a mysql. Verificado: shop_copy acabó con una tabla orders y sus tres filas.
Gotchas
- Un volcado de una tabla empieza con DROP TABLE. Todo lo escrito en esa tabla después del volcado desaparece al restaurar. Cuando de verdad quieres añadir, vuelca con
--no-create-info. --no-create-infochoca con la clave primaria. Verificado: cargar ese archivo sobre filas existentes daERROR 1062 (23000) at line 24: Duplicate entry '1' for key 'orders.PRIMARY'. Añadir solo funciona con filas nuevas: vacía la tabla antes, o usa--insert-ignoreo--replace.- Sin
--single-transactionel volcado bloquea la tabla. En MyISAM es inevitable; en InnoDB es una caída que te provocas tú mismo en pleno día.
Related questions
¿Cómo vuelco varias tablas? Enumerándolas: mysqldump shop orders customers. El inverso es --ignore-table=shop.logs, que excluye una.
¿Cómo comprimo el volcado al vuelo? mysqldump … | gzip > dump.sql.gz, y para restaurar zcat dump.sql.gz | mysql shop. No se combina con --result-file, que escribe el archivo por su cuenta.
¿Qué tal mysqldump frente a mysqlpump y mydumper? Los dos competidores vuelcan en paralelo y ganan en bases grandes, pero mysqldump está en todas partes y su salida la lee un humano.
See also
- pg_dump y pg_restore sin la trampa de versiones
- Los logs de Docker llenan el disco
- Verificar una descarga: sha256sum -c y luego la firma
CliAI escribe la línea del volcado con los flags que pide la situación y la muestra antes de que toque la base. Instálalo en una línea.