Csak a séma (struktúra) exportálása egy SQL dumpból

Van egy teljes dumpod a lemezen, de csak a struktúrára van szükséged – CREATE TABLE, indexek, idegenkulcsok – a 89 millió soros log-táblák nélkül. Vagy éppen fordítva: csak az adatra, CREATE utasítások nélkül. Megmutatjuk, miért nem segítenek a szokásos dump-kapcsolók egy meglévő fájlon, és hogyan válaszd le a struktúrát az adattól egyetlen kattintással.

Három helyzet folyton felbukkan:

Miért nem elég a mysqldump --no-data

A klasszikus tanács a mysqldump --no-data (csak struktúra) vagy a mysqldump --no-create-info (csak adat). Mindkettő export-kapcsoló: azt változtatják meg, hogy egy friss dump egy futó adatbázisból mit tartalmaz. Nem tesznek semmit egy dumppal, ami már a lemezeden ül egy .sql fájlként.

A gyakorlatban a fájl gyakran valaki mástól érkezik, vagy egy mentési feladatból, vagy egy szerverről, amelyhez már nincs élő hozzáférésed. Nem futtathatod újra a mysqldump-ot egy olyan adatbázison, amely nem elérhető – a hitelesítő adatok elvesztek, a szervert leszerelték, vagy a fájl egyszerűen minden, amit kaptál. Ezen a ponton a kapcsolók hasztalanok, és marad, hogy magát a fájlt szerkeszted.

A kézi út

A kézenfekvő lépés az, hogy sorokat szűrsz le grep-pel vagy sed-del. A struktúra megtartásához és az adat eldobásához:

# tarts meg mindent az INSERT sorok kivételével
grep -v '^INSERT INTO' dump.sql > schema.sql

# vagy tartsd meg csak az INSERT sorokat egy csak-adat fájlhoz
grep '^INSERT INTO' dump.sql > data.sql

Ez rendben néz ki egy kicsi, rendezett dumpon – aztán eltörik egy valódin:

A végén a saját szűrődet hibakeresed ahelyett, hogy megkapnád a sémádat.

Csak struktúra vagy csak adat a DumpCleanerrel

A DumpCleaner SQL utasításokat ért, nem sorokat illeszt, így megbízhatóan választja le a struktúrát az adatról – bármekkora fájlon:

  1. Húzd a .sql dumpodat a DumpCleanerbe (MySQL, MariaDB vagy PostgreSQL). A fájlt streamelve elemzi, így egy több gigabájtos dump állandó memóriával töltődik be.
  2. Kapcsold be a kívánt utasítástípusokat: CREATE TABLE, CREATE INDEX, INSERT INTO, ALTER, DROP, LOCK, SET. Vedd ki az INSERT INTO pipáját, és csak a struktúrát kapod; vedd ki a CREATE TABLE / CREATE INDEX pipáját, és csak az adatot kapod.
  3. Vagy válassz egy előbeállítást – Csak struktúra vagy Csak adat –, hogy minden kapcsolót egy lépésben állíts be, majd finomíts táblánként, ha akarsz.
  4. Exportálj. Kapsz egy karcsú sémafájlt staginghez vagy CI-hez, vagy egy tiszta, csak-adat dumpot a feltöltéshez.

Mivel a szűrő utasítás-tudatos, egy többsoros kiterjesztett INSERT egészben marad meg vagy esik ki – soha nem vágódik ketté középen.

Az igazi erő abban rejlik, hogy a szűrés utasítástípusonként és táblánként működik, és a kettő kombinálható. Megtarthatod minden tábla struktúráját, de INSERT-adatot csak arra a három táblára vonatkozóan vonhatsz be, amelyre valóban szükséged van – a 89 millió soros logs táblát üres burokként hagyva. Ilyet egyetlen --no-data kapcsoló sem tud kifejezni.

Válaszd le a struktúrát az adatról másodpercek alatt

A DumpCleaner egy meglévő dumpot utasítástípus és tábla szerint szűr – csak struktúra, csak adat, vagy bármilyen keverék – streamelve, állandó memóriával. Natív macOS & iPadOS alkalmazás, egyszeri vásárlás.

Letöltés az App Store-ból

Gyakran ismételt kérdések

Exportálhatom az adatot a séma nélkül?

Igen. Kapcsold ki a CREATE TABLE és CREATE INDEX utasításokat (vagy válaszd a Csak adat előbeállítást), és tartsd meg az INSERT INTO-t. A DumpCleaner csak a sorokat exportálja, készen egy már létező sémába való betöltésre.

Egy csak-struktúra export megtartja az indexeket és az idegenkulcsokat?

Igen. A csak struktúra megtartja a CREATE TABLE, CREATE INDEX, ALTER TABLE utasításokat és az idegenkulcs-definíciókat – mindent, ami meghatározza az adatbázist. Csak az INSERT adatsorok kerülnek eltávolításra.

Keverhetek – struktúra minden táblához, adat néhányhoz?

Igen. A szűrés utasítástípusonként és táblánként történik, és a kettő kombinálható. Tartsd meg minden tábla struktúráját, de INSERT-adatot csak arra a néhány táblára vonj be, amelyre valóban szükséged van.

Működik ez PostgreSQL-lel?

Igen. A DumpCleaner olvassa a MySQL, MariaDB és PostgreSQL dumpokat, és automatikusan felismeri a formátumot, így a csak-struktúra és csak-adat exportok ugyanúgy működnek a pg_dump fájlokra is.

Séma az adat nélkül – vagy adat a séma nélkül

Húzd be, kapcsold be az utasítástípusokat, exportálj. A DumpCleaner bármely dumpot pontosan arra a részre bont, amelyre szükséged van.

Letöltés az App Store-ból