Exportar apenas o esquema (estrutura) de um dump SQL

Tem um dump completo no disco, mas só quer a estrutura — CREATE TABLE, índices, chaves estrangeiras — sem as tabelas de log de 89 milhões de linhas. Ou o contrário: apenas os dados, sem instruções CREATE. Veja porque as opções habituais do dump não ajudam num ficheiro existente e como separar a estrutura dos dados com um clique.

Três situações surgem repetidamente:

Porque é que o mysqldump --no-data não chega

O conselho clássico é mysqldump --no-data (apenas estrutura) ou mysqldump --no-create-info (apenas dados). Ambos são opções de exportação: mudam o que um dump novo a partir de uma base de dados em execução contém. Não fazem nada por um dump que já tem no disco como ficheiro .sql.

Na prática, o ficheiro chega muitas vezes de outra pessoa, ou de um trabalho de backup, ou de um servidor a que já não tem acesso ativo. Não consegue voltar a correr o mysqldump contra uma base de dados inacessível — as credenciais desapareceram, o servidor foi desativado, ou o ficheiro é simplesmente tudo o que lhe deram. Nesse ponto as opções são inúteis e resta-lhe editar o próprio ficheiro.

A forma manual

O passo óbvio é remover linhas com grep ou sed. Para manter a estrutura e eliminar os dados:

# manter tudo exceto as linhas INSERT
grep -v '^INSERT INTO' dump.sql > schema.sql

# ou manter apenas as linhas INSERT para um ficheiro só de dados
grep '^INSERT INTO' dump.sql > data.sql

Isto parece bem num dump pequeno e arrumado — e depois falha num real:

Acaba a depurar o seu próprio filtro em vez de obter o seu esquema.

Apenas estrutura ou apenas dados com o DumpCleaner

O DumpCleaner compreende as instruções SQL em vez de corresponder a linhas, por isso separa a estrutura dos dados de forma fiável — em ficheiros de qualquer tamanho:

  1. Arraste o seu dump .sql para o DumpCleaner (MySQL, MariaDB ou PostgreSQL). Faz o parse do ficheiro em streaming, por isso um dump de vários gigabytes carrega com memória constante.
  2. Ative os tipos de instrução que quer: CREATE TABLE, CREATE INDEX, INSERT INTO, ALTER, DROP, LOCK, SET. Desmarque INSERT INTO e obtém apenas a estrutura; desmarque CREATE TABLE / CREATE INDEX e obtém apenas os dados.
  3. Ou escolha uma predefinição — Apenas estrutura ou Apenas dados — para definir todos os interruptores num só passo e depois afine por tabela, se quiser.
  4. Exporte. Obtém um ficheiro de esquema enxuto para staging ou CI, ou um dump limpo só de dados para seeding.

Como o filtro é ciente das instruções, um INSERT estendido multilinha é mantido ou eliminado como um todo — nunca cortado a meio.

O verdadeiro poder é que a filtragem funciona por tipo de instrução e por tabela, e as duas combinam-se. Pode manter a estrutura de todas as tabelas mas incluir dados INSERT apenas para as três tabelas de que precisa mesmo — deixando a tabela logs de 89 milhões de linhas como uma casca vazia. Isso é algo que nenhuma opção --no-data consegue exprimir.

Separe a estrutura dos dados em segundos

O DumpCleaner filtra um dump existente por tipo de instrução e por tabela — apenas estrutura, apenas dados ou qualquer mistura — em streaming, com memória constante. Aplicação nativa para macOS e iPadOS, compra única.

Descarregar na App Store

Perguntas frequentes

Posso exportar os dados sem o esquema?

Sim. Desative CREATE TABLE e CREATE INDEX (ou escolha a predefinição Apenas dados) e mantenha INSERT INTO. O DumpCleaner exporta apenas as linhas, prontas para carregar num esquema que já existe.

Uma exportação só de estrutura mantém os índices e as chaves estrangeiras?

Sim. Apenas estrutura mantém CREATE TABLE, CREATE INDEX, ALTER TABLE e as definições de chaves estrangeiras — tudo o que define a base de dados. Só as linhas de dados INSERT são removidas.

Posso misturar — estrutura para todas as tabelas, dados para algumas?

Sim. A filtragem é por tipo de instrução e por tabela, e ambas se combinam. Mantenha a estrutura de todas as tabelas mas inclua dados INSERT apenas para as poucas tabelas de que precisa mesmo.

Isto funciona com o PostgreSQL?

Sim. O DumpCleaner lê dumps de MySQL, MariaDB e PostgreSQL e deteta o formato automaticamente, por isso as exportações só de estrutura e só de dados funcionam da mesma forma para ficheiros do pg_dump.

Esquema sem os dados — ou dados sem o esquema

Arraste, ative os tipos de instrução, exporte. O DumpCleaner separa qualquer dump exatamente na parte de que precisa.

Descarregar na App Store