mysqldump -u root -p --single-transaction shop orders --result-file=orders.sql exporta uma tabela do banco, e mysql shop < orders.sql a devolve sem encostar em nenhuma outra. A resposta curta esconde duas coisas: o dump começa com DROP TABLE IF EXISTS, e o --where deixa você exportar só as linhas que interessam.
1. Exportar uma tabela
$ clai faça o dump da tabela orders do banco shop→ mysqldump -h my8 -uroot -p --single-transaction shop orders --result-file=orders.sql
Primeiro vem o nome do banco, depois as tabelas separadas por espaço. O --single-transaction tira um dump do InnoDB sem travar — num banco em produção essa flag não é opcional. --result-file no lugar de > preserva as quebras de linha e impede que texto de erro caia dentro do dump.
2. O que existe num dump desses
$ clai mostre as linhas significativas do dump→ 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'
Aqui está a parte que ninguém menciona. A primeiríssima instrução é DROP TABLE IF EXISTS. Restaurar esse arquivo não mistura dados com os atuais: substitui a tabela pelo estado dela no momento do dump.
3. Só a estrutura, sem linhas
$ clai exporte só a estrutura da tabela orders→ mysqldump -h my8 -uroot -p --no-data shop orders --result-file=schema.sql
--no-data mantém o CREATE TABLE e descarta todo INSERT — verificado, o arquivo não tem uma inserção sequer. Ótimo para comparar com diff o esquema de produção e o de homologação.
4. Exportar só as linhas necessárias
$ clai exporte só os 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');
Entraram duas linhas de três — o pedido de julho ficou de fora. A linha acima é o INSERT do arquivo gerado. É assim que se fazem extrações cirúrgicas: por data, por cliente, por faixa de id.
5. Restaurar uma tabela num banco em produção
$ clai restaure a tabela orders a partir do dump→ mysql -h my8 -uroot -p shop < orders.sql
Verificado num banco real: orders tinha 2 linhas antes da restauração e 3 depois, enquanto a tabela vizinha customers continuou exatamente como estava. É assim que se reverte uma tabela sem incomodar as demais.
6. O mesmo dump em outro banco
$ clai carregue o dump da tabela no banco shop_copy→ mysql -h my8 -uroot -p shop_copy < orders.sql
Um dump de tabela única não traz CREATE DATABASE nem USE, então o destino é escolhido pelo argumento que você dá ao mysql. Verificado: o shop_copy ficou com uma tabela orders e as três linhas.
Gotchas
- Um dump de tabela única começa com DROP TABLE. Tudo que foi escrito naquela tabela depois do dump some na restauração. Quando você realmente quer acrescentar, exporte com
--no-create-info. --no-create-infoesbarra na chave primária. Verificado: carregar esse arquivo sobre linhas existentes dáERROR 1062 (23000) at line 24: Duplicate entry '1' for key 'orders.PRIMARY'. Acrescentar só funciona para linhas novas — limpe a tabela antes, ou use--insert-ignoreou--replace.- Sem
--single-transactiono dump trava a tabela. No MyISAM não tem jeito; no InnoDB é uma indisponibilidade autoinfligida em pleno expediente.
Related questions
Como exporto várias tabelas? Basta listar: mysqldump shop orders customers. O inverso é --ignore-table=shop.logs, que exclui uma.
Como comprimo o dump na hora? mysqldump … | gzip > dump.sql.gz, e restaura com zcat dump.sql.gz | mysql shop. Isso não combina com --result-file, que grava o arquivo por conta própria.
Como o mysqldump se compara ao mysqlpump e ao mydumper? Os dois concorrentes exportam em paralelo e ganham em bancos grandes, mas o mysqldump está em todo lugar e a saída dele um humano consegue ler.
See also
- pg_dump e pg_restore sem a armadilha das versões
- Logs do Docker enchendo o disco
- Conferir um download: sha256sum -c e depois a assinatura
O CliAI escreve a linha de dump com as flags que a situação pede e mostra antes que ela encoste no banco. Instale em uma linha.