Esportare solo lo schema (struttura) da un dump SQL

Hai un dump completo su disco, ma vuoi solo la struttura — CREATE TABLE, indici, chiavi esterne — senza le tabelle di log da 89 milioni di righe. O il contrario: solo i dati, senza istruzioni CREATE. Ecco perché i soliti flag di dump non aiutano con un file esistente e come separare struttura e dati con un clic.

Ci sono tre situazioni che ricorrono continuamente:

Perché mysqldump --no-data non basta

Il consiglio classico è mysqldump --no-data (solo struttura) o mysqldump --no-create-info (solo dati). Entrambi sono flag di export: cambiano ciò che contiene un dump nuovo da un database in esecuzione. Non fanno nulla per un dump che hai già lì sul disco come file .sql.

In pratica il file spesso arriva da qualcun altro, o da un job di backup, o da un server a cui non hai più accesso in tempo reale. Non puoi rieseguire mysqldump contro un database irraggiungibile — le credenziali sono sparite, il server è stato dismesso o il file è semplicemente tutto ciò che ti è stato dato. A quel punto i flag sono inutili e ti tocca modificare il file stesso.

Il metodo manuale

La mossa ovvia è togliere righe con grep o sed. Per tenere la struttura ed eliminare i dati:

# tieni tutto tranne le righe INSERT
grep -v '^INSERT INTO' dump.sql > schema.sql

# oppure tieni solo le righe INSERT per un file di soli dati
grep '^INSERT INTO' dump.sql > data.sql

Sembra a posto su un dump piccolo e ordinato — e poi si rompe su uno vero:

Finisci per fare il debug del tuo stesso filtro invece di ottenere il tuo schema.

Solo struttura o solo dati con DumpCleaner

DumpCleaner comprende le istruzioni SQL invece di abbinare righe, quindi separa struttura e dati in modo affidabile — su file di qualsiasi dimensione:

  1. Trascina il tuo dump .sql in DumpCleaner (MySQL, MariaDB o PostgreSQL). Analizza il file in streaming, quindi un dump di più gigabyte si carica con memoria costante.
  2. Attiva i tipi di istruzione che vuoi: CREATE TABLE, CREATE INDEX, INSERT INTO, ALTER, DROP, LOCK, SET. Togli la spunta a INSERT INTO e ottieni solo la struttura; togli la spunta a CREATE TABLE / CREATE INDEX e ottieni solo i dati.
  3. Oppure scegli un preset — Solo struttura o Solo dati — per impostare ogni interruttore in un passaggio, poi affina per tabella se vuoi.
  4. Esporta. Ottieni un file di schema snello per staging o CI, oppure un dump pulito di soli dati per il seeding.

Poiché il filtro è consapevole delle istruzioni, una INSERT estesa multiriga viene tenuta o eliminata per intero — mai tagliata a metà.

La vera forza è che il filtraggio funziona per tipo di istruzione e per tabella, e i due si combinano. Puoi tenere la struttura di ogni tabella ma includere i dati INSERT solo per le tre tabelle che ti servono davvero — lasciando la tabella logs da 89 milioni di righe come un guscio vuoto. È qualcosa che nessun flag --no-data può esprimere.

Separa struttura e dati in pochi secondi

DumpCleaner filtra un dump esistente per tipo di istruzione e per tabella — solo struttura, solo dati o qualsiasi combinazione — in streaming, con memoria costante. App nativa per macOS e iPadOS, acquisto una tantum.

Scarica dall'App Store

Domande frequenti

Posso esportare i dati senza lo schema?

Sì. Disabilita CREATE TABLE e CREATE INDEX (o scegli il preset Solo dati) e tieni INSERT INTO. DumpCleaner esporta solo le righe, pronte da caricare in uno schema che esiste già.

Un export solo struttura mantiene indici e chiavi esterne?

Sì. Solo struttura mantiene CREATE TABLE, CREATE INDEX, ALTER TABLE e le definizioni di chiave esterna — tutto ciò che definisce il database. Vengono rimosse solo le righe di dati INSERT.

Posso mescolare — struttura per tutte le tabelle, dati per alcune?

Sì. Il filtraggio è per tipo di istruzione e per tabella, e i due si combinano. Tieni la struttura di ogni tabella ma includi i dati INSERT solo per le poche tabelle che ti servono davvero.

Funziona con PostgreSQL?

Sì. DumpCleaner legge dump MySQL, MariaDB e PostgreSQL e rileva il formato automaticamente, quindi gli export solo struttura e solo dati funzionano allo stesso modo per i file pg_dump.

Schema senza i dati — o dati senza lo schema

Trascina, attiva i tipi di istruzione, esporta. DumpCleaner divide qualsiasi dump esattamente nella parte che ti serve.

Scarica dall'App Store