Como abrir um ficheiro dump SQL grande no Mac (sem crash)

Faz duplo clique numa exportação .sql de 20–50 GB e o seu editor gira, congela e depois morre. Nem consegue abrir o ficheiro — quanto mais remover uma única tabela inchada. Veja porque os editores se engasgam, as alternativas na linha de comandos e uma forma mais rápida.

Um dump de uma base de dados de produção pode facilmente atingir dezenas de gigabytes. No momento em que tenta abri-lo num editor de texto normal, a ventoinha do seu Mac dispara, aparece a bola de praia e, por fim, a aplicação encerra — às vezes levando consigo trabalho não guardado noutras janelas.

Porque é que os editores se engasgam com dumps grandes

O VS Code, o TextEdit, o Sublime Text e afins foram concebidos para carregar o ficheiro inteiro para a memória, de modo a poderem deslocar-se, pesquisar e realçar instantaneamente. Isso é ótimo para um ficheiro fonte de 2 MB. Para um dump de 40 GB significa que o editor tenta alocar 40 GB (mais a sobrecarga das suas estruturas de dados internas) na RAM.

O seu Mac tem 16 ou 32 GB. Muito antes de o ficheiro estar totalmente carregado, o sistema fica sem memória física, começa a usar swap no disco e trava por completo. A maioria dos editores também recusa logo à partida: o VS Code limita os ficheiros a cerca de 50 MB para o editor completo e passa para um modo reduzido, o TextEdit simplesmente bloqueia e o Sublime aloca memória até crashar. Mesmo que consiga abrir o ficheiro, o realce de sintaxe e a pesquisa voltam a percorrer gigabytes a cada tecla premida.

O problema central: estas ferramentas assumem acesso aleatório a todo o documento. Um dump não precisa disso — é uma lista sequencial de instruções. Basta percorrê-lo em streaming.

A via da linha de comandos

As ferramentas Unix do seu Mac já funcionam em streaming, por isso nunca carregam o ficheiro inteiro. São o clássico primeiro recurso:

# Espreitar as primeiras e as últimas linhas sem abrir o ficheiro inteiro
head -n 50 dump.sql
tail -n 50 dump.sql

# Dividir o dump em blocos de 100 MB com os nomes part_aa, part_ab, ...
split -b 100m dump.sql part_

# Extrair o bloco de uma tabela entre dois marcadores
sed -n '/CREATE TABLE `users`/,/UNLOCK TABLES/p' dump.sql > users.sql

Isto funciona, mas é frágil e trabalhoso. O split -b corta em fronteiras de bytes em bruto, por isso vai fatiar mesmo pelo meio de uma instrução INSERT — os blocos resultantes não são, por si só, SQL válido. O truque do intervalo do sed depende dos marcadores exatos que uma determinada ferramenta de dump gera; mude a versão do MySQL ou passe para PostgreSQL e o padrão deixa de corresponder. E nada disto lhe dá uma visão do que está de facto dentro do ficheiro — está a adivinhar qual é a tabela de 30 GB antes de a poder sequer visar.

Abri-lo e filtrá-lo com o DumpCleaner

O DumpCleaner foi feito exatamente para este tamanho de ficheiro. Percorre o dump em streaming como a linha de comandos, mas compreende a estrutura do SQL, por isso obtém uma lista de tabelas real e uma saída segura e ciente das instruções:

  1. Arraste o ficheiro para dentro. O DumpCleaner abre o dump percorrendo-o em blocos de ~1 MB — um ficheiro de 50 GB abre com cerca de 50 MB de RAM, por isso nada congela.
  2. Veja todas as tabelas. Analisa o dump e lista cada tabela com o seu tamanho, para que perceba de imediato qual está a inchar o ficheiro.
  3. Desmarque o que não precisa. Desmarque as gigantescas tabelas de log, sessões ou analytics. O DumpCleaner mantém as instruções inteiras — sem INSERTs cortados a meio.
  4. Exporte. Escreva um novo ficheiro .sql mais pequeno que finalmente abre e importa sem problemas. O seu ficheiro original nunca é modificado.

Como processa dumps de 50 GB e maiores com memória constante, não tem de pensar de todo na RAM do seu Mac. E como lê a origem e escreve numa saída separada, o dump com que começou fica exatamente como estava.

Abra dumps que o seu editor não consegue

O DumpCleaner percorre dumps SQL de qualquer tamanho com memória constante — sem crash, sem swap, sem esperas. Arraste um ficheiro de 50 GB, elimine as tabelas de que não precisa e exporte um mais pequeno. Aplicação nativa para macOS e iPadOS, compra única.

Descarregar na App Store

Perguntas frequentes

Que tamanho de dump SQL é que o DumpCleaner consegue processar?

Não há limite fixo. Processa o ficheiro como um fluxo em pequenos blocos, por isso dumps de 50 GB e maiores funcionam como os pequenos — o tamanho é limitado pelo seu disco, não pela sua RAM.

O DumpCleaner carrega o ficheiro inteiro para a RAM?

Não. Ao contrário de um editor de texto, lê o dump em pequenos blocos e mantém a memória mais ou menos constante, à volta de 50 MB, quer o ficheiro tenha 200 MB ou 50 GB.

Posso dividir um dump por tabela?

Sim. Em vez de o split cortar cegamente em fronteiras de bytes, o DumpCleaner compreende a estrutura das tabelas. Desmarque as tabelas que não quer e exporte um ficheiro limpo apenas com as que mantém.

O DumpCleaner modifica o meu ficheiro original?

Não. O dump de origem é apenas lido — o DumpCleaner escreve sempre um novo ficheiro, por isso o seu original permanece intacto.

Deixe de lutar com o seu editor

Arraste o dump enorme, elimine as tabelas de que não precisa e exporte um ficheiro que abre mesmo. O DumpCleaner lida com qualquer tamanho com memória constante.

Descarregar na App Store