Eksportér kun skemaet (strukturen) fra en SQL-dump

Du har en fuld dump på disken, men du vil kun have strukturen — CREATE TABLE, indekser, foreign keys — uden logtabellerne med 89 millioner rækker. Eller det modsatte: bare dataene, ingen CREATE-sætninger. Her er, hvorfor de sædvanlige dump-flag ikke hjælper en eksisterende fil, og hvordan du adskiller struktur fra data med ét klik.

Tre situationer dukker op igen og igen:

Hvorfor mysqldump --no-data ikke er nok

Det klassiske råd er mysqldump --no-data (kun struktur) eller mysqldump --no-create-info (kun data). Begge er eksport-flag: de ændrer, hvad en frisk dump fra en kørende database indeholder. De gør intet for en dump, du allerede har liggende på disken som en .sql-fil.

I praksis ankommer filen ofte fra en anden, eller fra et backup-job, eller fra en server, du ikke længere har live-adgang til. Du kan ikke køre mysqldump igen mod en database, der ikke er tilgængelig — legitimationsoplysningerne er væk, serveren er nedlagt, eller filen er simpelthen alt, du fik udleveret. På det tidspunkt er flagene ubrugelige, og du er tvunget til at redigere selve filen.

Den manuelle måde

Det oplagte træk er at fjerne linjer med grep eller sed. For at beholde strukturen og droppe dataene:

# behold alt undtagen INSERT-rækker
grep -v '^INSERT INTO' dump.sql > schema.sql

# eller behold kun INSERT-rækkerne til en fil med kun data
grep '^INSERT INTO' dump.sql > data.sql

Det ser fint ud på en lille, ryddelig dump — og går så i stykker på en rigtig:

Du ender med at fejlfinde dit eget filter i stedet for at få dit skema.

Kun struktur eller kun data med DumpCleaner

DumpCleaner forstår SQL-sætninger i stedet for at matche linjer, så den adskiller struktur fra data pålideligt — på filer af enhver størrelse:

  1. Træk din .sql-dump ind i DumpCleaner (MySQL, MariaDB eller PostgreSQL). Den parser filen ved at streame, så en dump på flere gigabyte indlæses med konstant hukommelse.
  2. Slå de sætningstyper til/fra, du vil have: CREATE TABLE, CREATE INDEX, INSERT INTO, ALTER, DROP, LOCK, SET. Fjern fluebenet ved INSERT INTO, og du får kun struktur; fjern fluebenet ved CREATE TABLE / CREATE INDEX, og du får kun data.
  3. Eller vælg en forudindstilling — Kun struktur eller Kun data — for at sætte alle knapper i ét trin, og forfin så pr. tabel, hvis du vil.
  4. Eksportér. Du får en slank skemafil til staging eller CI, eller en ren dump med kun data til seeding.

Fordi filteret er sætningsbevidst, beholdes eller droppes en flerlinjet udvidet INSERT som en helhed — aldrig skåret over på midten.

Den virkelige styrke er, at filtrering virker pr. sætningstype og pr. tabel, og de to kombineres. Du kan beholde strukturen af hver tabel, men kun inkludere INSERT-data for de tre tabeller, du faktisk har brug for — så logtabellen med 89 millioner rækker bliver en tom skal. Det er noget, intet --no-data-flag kan udtrykke.

Adskil struktur fra data på sekunder

DumpCleaner filtrerer en eksisterende dump efter sætningstype og efter tabel — kun struktur, kun data eller enhver blanding — streamende, med konstant hukommelse. Native macOS- & iPadOS-app, engangskøb.

Hent i App Store

Ofte stillede spørgsmål

Kan jeg eksportere dataene uden skemaet?

Ja. Deaktivér CREATE TABLE og CREATE INDEX (eller vælg forudindstillingen Kun data), og behold INSERT INTO. DumpCleaner eksporterer bare rækkerne, klar til at indlæse i et skema, der allerede findes.

Bevarer en eksport med kun struktur indekser og foreign keys?

Ja. Kun struktur beholder CREATE TABLE, CREATE INDEX, ALTER TABLE og foreign key-definitionerne — alt, der definerer databasen. Kun INSERT-datarækkerne fjernes.

Kan jeg blande — struktur for alle tabeller, data for nogle?

Ja. Filtrering er pr. sætningstype og pr. tabel, og begge kombineres. Behold strukturen af hver tabel, men inkludér kun INSERT-data for de få tabeller, du faktisk har brug for.

Virker dette med PostgreSQL?

Ja. DumpCleaner læser MySQL-, MariaDB- og PostgreSQL-dumps og registrerer formatet automatisk, så eksport med kun struktur og kun data fungerer på samme måde for pg_dump-filer.

Skema uden data — eller data uden skema

Træk, slå sætningstyperne til/fra, eksportér. DumpCleaner deler enhver dump op i præcis den del, du har brug for.

Hent i App Store